;
+ close(FILEHANDLE);
+ $PARAMS{'infile'} = $opt_i || $PARAMS{'infile'};
+ };
+
+ if ($PARAMS{'replacetabs'} != 0)
+ {
+ $code = join (
+ "\n",
+ map{
+ &checkTabulator($_, $PARAMS{'replacetabs'})
+ }
+ my @dummy = split(/\n/, $code)
+ );
+ };
+
+
+
+ if ( not $langmode )
+ {
+ my $test_code = substr($code, 0, $LANG_TEST_LENGTH);
+ # warn("language mode not given. guessing...\n");
+
+ $langmode = '';
+
+ for (keys %LANGUAGE)
+ {
+ if ( (($LANGUAGE{$_}->{'filename'} ne '')
+ && ($PARAMS{'infile'}
+ =~ m/$LANGUAGE{$_}->{filename}/)) ||
+ (($LANGUAGE{$_}->{'regex'} ne '')
+ && ($test_code =~ m/$LANGUAGE{$_}->{regex}/ ))
+ )
+ {
+ $langmode = $_;
+ last;
+ };
+ };
+
+ if ($langmode eq '')
+ {
+ if ( not $alt_langmode )
+ {
+ warn("Guessing language mode failed. " .
+ "Using fallback mode: '$alt_langmode'\n");
+ $langmode = $alt_langmode;
+ $alt_langmode = '';
+ }
+ else
+ {
+ print $code unless $str;
+ return("Guessing language mode failed.\n")
+ };
+ }
+ else
+ {
+ # warn("using '$langmode'\n");
+ };
+ };
+
+ $_[2] = $langmode;
+ $_[3] = $alt_langmode;
+ print "==> append : to filename to switch off syntax highlighting\n";
+ return \$code;
+ };
+
+
+###########################################################################
+####################### put_headers #######################################
+###########################################################################
+sub put_headers
+{
+ my $html;
+ my %PARAMS = %{shift()};
+ my $STYLE_REF = shift();
+
+ if ( $PARAMS{'content_type'}) {
+ $html .= "Content-Type: $$STYLE_REF{'content-type'}\n";
+ if ($PARAMS{'content_encoding'}) {
+ $html .= "Content-Encoding: $PARAMS{'encoding'}\n";
+ }
+ $html .= "\n";
+ }
+ $html .= $$STYLE_REF{'header'} unless $PARAMS{'noheader'};
+
+ return $html;
+};
+
+############################################################################
+####################### apply_stylesheets_to_rules #########################
+############################################################################
+sub apply_stylesheets_to_rules
+ {
+ my ( $regexps_ref, $style_ref ) = @_;
+
+ for ( @$regexps_ref ) {
+ warn ("Style '".$_->{style}."' not defined in stylesheet.\n") unless defined $ { $$style_ref{'tags'} } { $_->{style} };
+ $_->{'starttag'} = $ { $ { $$style_ref{'tags'} } { $_->{style} } } { 'start' };
+ $_->{'endtag'} = $ { $ { $$style_ref{'tags'} } { $_->{style} } } { 'stop' };
+ apply_stylesheets_to_rules( $_->{childregex}, $style_ref ) if $_->{childregex};
+ };
+ };
+
+###########################################################################
+####################### create_snippetlist ################################
+###########################################################################
+sub create_snippetlist
+ {
+ my ( $regexps_ref, $code, $snippetlist_ref, $style_ref ) = @_ ;
+ my $length = length( $code );
+
+ ## An array of regular expression sturctures, each of which is an
+ ## array. @res is kept sorted by starting position of the RExen and
+ ## then by the position of the regex in the language file. This allows
+ ## us to just evaluate $res[0], and to hand write fast code that typically
+ ## handles 90% of the cases without resorting to the _big_ guns.
+ ##
+ ## FWIW, I pronounce '@res' REEZE, as in the plural of '$re'.
+ ##
+ my @res ;
+
+ my $pos ;
+
+ for ( @$regexps_ref ) {
+ pos( $code ) = 0 ;
+#++$m ;
+ next unless $code =~ m/($_->{regex})/gms ;
+
+ $pos = pos( $code ) ;
+# $res[@res] = [
+# $_->{regex},
+# $ { $ { $$style_ref{'tags'} } { $_->{style} } } { 'start' },
+# $ { $ { $$style_ref{'tags'} } { $_->{style} } } { 'stop' },
+# $_->{childregex},
+# $pos - length( $1 ),
+# $pos,
+# scalar( @res ),
+# ] ;
+ $res[@res] = [
+ $_->{regex},
+ $_->{starttag},
+ $_->{endtag},
+ $_->{childregex},
+ $pos - length( $1 ),
+ $pos,
+ scalar( @res ),
+ ] ;
+ }
+
+ ## 90% of all child regexes end up with 0 or 1 regex that needs to be
+ ## worried about. Trimming out the 0's speeds things up a bit and
+ ## makes the below loop simpler, since there's always at least
+ ## 1 regexp. It donsn't speed things up much by itself: the percentage
+ ## of times this fires is really small. But it does simplify the loop
+ ## below and speed it up.
+ unless ( @res ) {
+ $code =~ s/($ENTITIES)/$ENTITIES{$1}/ge ;
+ push @$snippetlist_ref, $code ;
+ return ;
+ }
+
+ @res = sort { $a->[4] <=> $b->[4] || $a->[6] <=> $b->[6] } @res ;
+
+ ## Add a dummy at the end, which makes the logic below simpler / faster.
+ $res[@res] = [
+ undef,
+ undef,
+ undef,
+ undef,
+ $length,
+ $length,
+ scalar( @res ),
+ ] ;
+
+ ## These are declared here for (minor) speed improvement.
+ my $re ;
+ my $match_spos ;
+ my $match_pos ;
+ my $re_spos ;
+ my $re_pos ;
+ my $re_num ;
+ my $prefix ;
+ my $snippet ;
+ my $rest ;
+ my $i ;
+ my $l ;
+
+my @changed_res ;
+my $j ;
+
+ $pos = 0 ;
+MAIN:
+ while ( $pos < $length ) {
+ $re = $res[0] ;
+
+ $match_spos = $re->[4] ;
+ $match_pos = $re->[5] ;
+
+ if ( $match_spos > $pos ) {
+ $prefix = substr( $code, $pos, $match_spos - $pos ) ;
+ $prefix =~ s/($ENTITIES)/$ENTITIES{$1}/ge ;
+ push @$snippetlist_ref, $prefix ;
+ }
+
+ if ( $match_pos > $match_spos ) {
+ $snippet = substr( $code, $match_spos, $match_pos - $match_spos ) ;
+ if ( @{$re->[3]} ) {
+ push @$snippetlist_ref, $re->[1] ;
+ create_snippetlist( $re->[3], $snippet, $snippetlist_ref, $style_ref ) ;
+ push @$snippetlist_ref, $re->[2] ;
+ }
+ else {
+ $snippet =~ s/($ENTITIES)/$ENTITIES{$1}/ge ;
+ push @$snippetlist_ref, $re->[1], $snippet, $re->[2];
+ }
+ }
+
+ $pos = $match_pos ;
+
+ ##
+ ## Hand coded optimizations. Luckily, the cases that arise most often
+ ## are the easiest to tune.
+ ##
+
+# =pod
+
+ if ( $res[1]->[4] >= $pos ) {
+ ## Only first regex needs to be moved, 2nd and later are still valid.
+ ## This is often 90% of the cases for Perl or C (others not tested,
+ ## just uncomment the $n, $o, and $p lines and try it yourself).
+#++$n{1} ;
+#++$m ;
+ pos( $code ) = $pos ;
+ unless ( $code =~ m/($re->[0])/gms ) {
+#++$o{'0'} ;
+ if ( @res == 2 ) {
+ ## If the only regexp left is the dummy, we're done.
+ $rest = substr( $code, $pos ) ;
+ $rest =~ s/($ENTITIES)/$ENTITIES{$1}/ge ;
+ push @$snippetlist_ref, $rest ;
+ last ;
+ }
+ shift @res ;
+ }
+ else {
+ $re->[5] = $re_pos = pos( $code ) ;
+ $re->[4] = $re_spos = $re_pos - length( $1 ) ;
+
+ ## Walk down the array looking for $re's new home.
+ ## The first few loop iterations are unrolled and done manually
+ ## for speed, which handles 85 to 90% of the cases where only
+ ## $re needs to be moved.
+ ##
+ ## Here's where that dummy regexp at the end of the array comes
+ ## in handy: we don't need to worry about array size here, since
+ ## it will always be after $re no matter what. The unrolled
+ ## loop stuff is outdented to make the conditionals fit on one
+ ## 80 char line.
+ ## Element 4 in @{$res[x]} is the start position of the match.
+ ## Element 6 is the order in which it was declared in the lang file.
+ $re_num = $re->[6] ;
+ if ( ( $re_spos <=> $res[1]->[4] || $re_num <=> $res[1]->[6] ) <= 0 ) {
+#++$o{'1'} ;
+ next
+ }
+ $res[0] = $res[1] ;
+
+#++$o{'2'} ;
+ if ( ( $re_spos <=> $res[2]->[4] || $re_num <=> $res[2]->[6] ) <= 0 ) {
+ $res[1] = $re ;
+ next ;
+ }
+ $res[1] = $res[2] ;
+
+ if ( ( $re_spos <=> $res[3]->[4] || $re_num <=> $res[3]->[6] ) <= 0 ) {
+#++$o{'3'} ;
+ $res[2] = $re ;
+ next ;
+ }
+ $res[2] = $res[3] ;
+
+ if ( ( $re_spos <=> $res[4]->[4] || $re_num <=> $res[4]->[6] ) <= 0 ) {
+#++$o{'3'} ;
+ $res[3] = $re ;
+ next ;
+ }
+ $res[3] = $res[4] ;
+
+ if ( ( $re_spos <=> $res[5]->[4] || $re_num <=> $res[5]->[6] ) <= 0 ) {
+#++$o{'4'} ;
+ $res[4] = $re ;
+ next ;
+ }
+ $res[4] = $res[5] ;
+
+#++$o{'ugh'} ;
+ $i = 6 ;
+ $l = $#res ;
+ for ( ; $i < $l ; ++$i ) {
+ last
+ if (
+ ( $re_spos <=> $res[$i]->[4] || $re_num <=> $res[$i]->[6] )
+ <= 0
+ ) ;
+ $res[$i-1] = $res[$i] ;
+ }
+#++$p{sprintf( "%2d", $i )} ;
+ $res[$i-1] = $re ;
+ }
+
+ next ;
+ }
+
+# =cut
+
+ ##
+ ## End optimizations. You can comment them all out and this net
+ ## does all the work, just more slowly. If you do that, then
+ ## you also need to comment out the code below that deals with
+ ## the second entry in @res.
+ ##
+
+#my $ni = 0 ;
+ ## First re always needs to be tweaked
+#++$m ;
+#++$ni ;
+ pos( $code ) = $pos ;
+ unless ( $code =~ m/($re->[0])/gms ) {
+ if ( @res == 2 ) {
+ ## If the only regexp left is the dummy, we're done.
+ $rest = substr( $code, $pos ) ;
+ $rest =~ s/($ENTITIES)/$ENTITIES{$1}/ge ;
+ push @$snippetlist_ref, $rest ;
+ last ;
+ }
+ shift @res ;
+ @changed_res = () ;
+ $i = 0 ;
+ }
+ else {
+ $re->[5] = $re_pos = pos( $code ) ;
+ $re->[4] = $re_pos - length( $1 ) ;
+ @changed_res = ( $re ) ;
+ $i = 1 ;
+ }
+
+ ## If the optimizations above are in, the second one always
+ ## needs to be tweaked, too.
+ $re = $res[$i] ;
+#++$m ;
+#++$ni ;
+ pos( $code ) = $pos ;
+ unless ( $code =~ m/($re->[0])/gms ) {
+ if ( @res == 2 ) {
+ ## If the only regexp left is the dummy, we're done.
+ $rest = substr( $code, $pos ) ;
+ $rest =~ s/($ENTITIES)/$ENTITIES{$1}/ge ;
+ push @$snippetlist_ref, $rest ;
+ last ;
+ }
+ shift @res ;
+ }
+ else {
+ $re->[5] = $re_pos = pos( $code ) ;
+ $re->[4] = $re_spos = $re_pos - length( $1 ) ;
+ if ( @changed_res &&
+ ( $changed_res[0]->[4] <=> $re_spos ||
+ $changed_res[0]->[6] <=> $re->[6]
+ ) > 0
+ ) {
+ unshift @changed_res, $re ;
+ }
+ else {
+ $changed_res[$i] = $re ;
+ }
+ ++$i ;
+ }
+
+ for ( ; ; ++$i ) {
+ local $_ = $res[$i] ;
+#++$m ;
+ last if $_->[4] >= $pos ;
+#++$ni ;
+#++$m ;
+ pos( $code ) = $pos ;
+ unless ( $code =~ m/($_->[0])/gms ) {
+ if ( @res <= 2 ) {
+ $rest = substr( $code, $pos ) ;
+ $rest =~ s/($ENTITIES)/$ENTITIES{$1}/ge ;
+ push @$snippetlist_ref, $rest ;
+ last MAIN ;
+ }
+ ## If this regex is no longer needed, remove it by not pushing it
+ ## on to @changed_res. This means we need one less slot in @res.
+ shift @res ;
+ redo ;
+ }
+
+ $_->[5] = $re_pos = pos( $code ) ;
+ $_->[4] = $re_spos = $re_pos - length( $1 ) ;
+
+ ## Insertion sort in to @changed_res
+ $re_num = $_->[6] ;
+ for ( $j = $#changed_res ; $j > -1 ; --$j ) {
+ last
+ if (
+ ( $changed_res[$j]->[4] <=> $re_spos ||
+ $changed_res[$j]->[6] <=> $re_num
+ ) < 0
+ ) ;
+ $changed_res[$j+1] = $changed_res[$j] ;
+ }
+ $changed_res[$j+1] = $_ ;
+ }
+
+ ## Merge sort @changed_res and @res in to @res
+ $j = 0 ;
+ $l = $#res ;
+ for ( @changed_res ) {
+ while (
+ $i < $l &&
+ ( $_->[4] <=> $res[$i]->[4] || $_->[6] <=> $res[$i]->[6] ) > 0
+ ) {
+ $res[$j++] = $res[$i++] ;
+ }
+ $res[$j++] = $_ ;
+ }
+# =cut
+ }
+};
+
+
+##########################################################################
+####################### put_output #######################################
+##########################################################################
+sub put_output {
+ my ( $params, $snippetlist_ref, $STYLE_REF ) = @_ ;
+
+ my $result;
+
+ my $prefix = '';
+ $prefix = $params->{'line_number_prefix'}.'_'
+ if $params->{'line_number_prefix'};
+
+ $result = &{ $ { $$STYLE_REF{'linenumbers'}} {$params->{'linenumbers'}}
+ }(join ('', @$snippetlist_ref), $prefix);
+
+ # print FILEHANDLE $result unless $params->{'dont_print_output'} ;
+ # print FILEHANDLE $$STYLE_REF{'footer'} unless $params->{'noheader'};
+
+ $result .= $$STYLE_REF{'footer'} unless $params->{noheader};
+
+ return $result;
+};
+
+
+############################################################################
+####################### get_default_stylesheet #############################
+############################################################################
+sub get_default_stylesheet
+{
+
+my %STYLESHEET;
+
+
+##########
+########## different color modes for html.
+# those are named html-dark, html-nobc and html-light.
+# html-light is also named html
+# the only difference between html-light and html-nobc is
+# that html-light defines a body background and text color.
+# nobc stands for no body colors.
+
+my ($bold, $underline, $reverse, $reset, $red, $green, $yellow, $blue,
+ $magenta, $cyan);
+eval "use Term::ANSIColor";
+if ($@) {
+ $bold = "\e[1m";
+ $underline = "\e[4m";
+ $reverse = "\e[7m";
+ $reset = "\e[0m";
+ $red = "\e[31m";
+ $green = "\e[32m";
+ $yellow = "\e[33m";
+ $blue = "\e[34m";
+ $magenta = "\e[35m";
+ $cyan = "\e[36m";
+} else {
+ $bold = color('bold');
+ $underline = color('underline');
+ $reverse = color('reverse');
+ $reset = color('reset');
+ $red = color('red');
+ $green = color('green');
+ $yellow = color('yellow');
+ $blue = color('blue');
+ $magenta = color('magenta');
+ $cyan = color('cyan');
+}
+$STYLESHEET{'xterm'} = { 'template' => '%%code%%',
+ 'content-type' => 'text/html',
+ 'linenumbers' => {
+ 'none' => sub {
+ return $_[0];
+ },
+ 'normal' => sub {
+ # o as the first parameter is the joined snippetlist
+ # o the second is an optional prefix, needed if more than one block
+ # in a file is highlighted. needed in patch-mode. may be empty
+ # the sub should the return a scalar made up of the joined lines including linenumbers
+ my @lines = split ( /\n/, $_[0] );
+ my $nr = 0;
+ my $lengthofnr = length(@lines);
+ my $format = qq{%${lengthofnr}u %s\n} ;
+ join ('', map ( {$nr++; sprintf ( $format , $nr, $_ )} @lines));
+ },
+ 'linked' => sub {
+ # is not defined for xterm output, therefore do nothing
+ return $_[0];
+ },
+ },
+ 'tags' => {
+ 'comment' => { 'start' => $blue,
+ 'stop' => $reset },
+ 'doc comment' => { 'start' => "$bold$blue",
+ 'stop' => $reset },
+ 'string' => { 'start' => $red,
+ 'stop' => $reset },
+ 'esc string' => { 'start' => $magenta,
+ 'stop' => $reset },
+ 'character' => { 'start' => $reset,
+ 'stop' => $reset },
+ 'esc character' => { 'start' => $magenta,
+ 'stop' => $reset },
+ 'numeric' => { 'start' => $red,
+ 'stop' => $reset },
+ 'identifier' => { 'start' => $cyan,
+ 'stop' => $reset },
+ 'predefined identifier' => { 'start' => $cyan,
+ 'stop' => $reset },
+ 'type' => { 'start' => $cyan,
+ 'stop' => $reset },
+ 'predefined type' => { 'start' => $green,
+ 'stop' => $reset },
+ 'reserved word' => { 'start' => "$yellow",
+ 'stop' => $reset },
+ 'library function' => { 'start' => $reset,
+ 'stop' => $reset },
+ 'include' => { 'start' => $green,
+ 'stop' => $reset },
+ 'preprocessor' => { 'start' => $green,
+ 'stop' => $reset },
+ 'braces' => { 'start' => $reset,
+ 'stop' => $reset },
+ 'symbol' => { 'start' => $green,
+ 'stop' => $reset },
+ 'function header' => { 'start' => "$bold$red",
+ 'stop' => $reset },
+ 'function header name' => { 'start' => "$bold$cyan",
+ 'stop' => $reset },
+ 'function header args' => { 'start' => $cyan,
+ 'stop' => $reset },
+ 'regex' => { 'start' => $magenta,
+ 'stop' => $reset },
+ 'text' => { 'start' => $red,
+ 'stop' => $reset},
+
+ # HTML
+ 'entity' => { 'start' => $green,
+ 'stop' => $reset },
+
+ # MAKEFILE
+ 'assignment' => { 'start' => $green,
+ 'stop' => $reset },
+ 'dependency line' => { 'start' => $cyan,
+ 'stop' => $reset },
+ 'dependency target' => { 'start' => $blue,
+ 'stop' => $reset },
+ 'dependency continuation'=> { 'start' => $magenta,
+ 'stop' => $reset },
+ 'continuation' => { 'start' => $magenta,
+ 'stop' => $reset },
+ 'macro' => { 'start' => $red,
+ 'stop' => $reset },
+ 'int macro' => { 'start' => $red,
+ 'stop' => $reset },
+ 'esc $$$' => { 'start' => $yellow,
+ 'stop' => $reset },
+ 'separator' => { 'start' => $green,
+ 'stop' => $reset },
+ 'line spec' => { 'start' => $cyan,
+ 'stop' => $reset },
+ 'deletion' => { 'start' => $red,
+ 'stop' => $reset },
+ 'insertion' => { 'start' => $blue,
+ 'stop' => $reset },
+ 'modification' => { 'start' => $magenta,
+ 'stop' => $reset },
+ }
+ };
+$STYLESHEET{'html-light'} = { 'template' =>
+'
+
+ %%title%%
+
+
+
+%%code%%
+
+syntax highlighted by
+Code2HTML, v. %%version%%
+
+
+',
+ 'content-type' => 'text/html',
+ 'entities' => { 'listofchars' => '[<>&"]', # a regex actually
+ 'replace_by' => {
+ '&' => '&',
+ '<' => '<',
+ '>' => '>',
+ '"' => '"'
+ }
+ },
+ 'linenumbers' => {
+ 'none' => sub {
+ return $_[0];
+ },
+ 'normal' => sub {
+ # o as the first parameter is the joined snippetlist
+ # o the second is an optional prefix, needed if more than one block
+ # in a file is highlighted. needed in patch-mode. may be empty
+ # the sub should the return a scalar made up of the joined lines including linenumbers
+ my @lines = split ( /\n/, $_[0] );
+
+ my $nr = 0;
+ my $lengthofnr = length(@lines);
+ my $format = qq{%${lengthofnr}u %s\n} ;
+ join ('', map ( {$nr++; sprintf ( $format , $nr, $nr, $_ )} @lines));
+ },
+ 'linked' => sub {
+ # this should do the same as above only with linenumbers that link to themselves
+ # If this style does not support this, use the same as above.
+ my @lines = split ( /\n/, $_[0] );
+
+ my $nr = 0;
+ my $lengthofnr = length(@lines);
+ my $format = qq{%$ {lengthofnr}u %s\n};
+ join ('', map ( {$nr++; sprintf ( $format , $nr, $nr, $nr, $_ )} @lines));
+ }
+ },
+ 'tags' => {
+ 'comment' => { 'start' => '',
+ 'stop' => '' },
+ 'doc comment' => { 'start' => '',
+ 'stop' => '' },
+ 'string' => { 'start' => '',
+ 'stop' => '' },
+ 'esc string' => { 'start' => '',
+ 'stop' => '' },
+ 'character' => { 'start' => '',
+ 'stop' => '' },
+ 'esc character' => { 'start' => '',
+ 'stop' => '' },
+ 'numeric' => { 'start' => '',
+ 'stop' => '' },
+
+ 'identifier' => { 'start' => '',
+ 'stop' => '' },
+ 'predefined identifier' => { 'start' => '',
+ 'stop' => '' },
+
+ 'type' => { 'start' => '',
+ 'stop' => '' },
+ 'predefined type' => { 'start' => '',
+ 'stop' => '' },
+
+ 'reserved word' => { 'start' => '',
+ 'stop' => '' },
+ 'library function' => { 'start' => '',
+ 'stop' => '' },
+
+ 'include' => { 'start' => '',
+ 'stop' => '' },
+ 'preprocessor' => { 'start' => '',
+ 'stop' => '' },
+
+ 'braces' => { 'start' => '',
+ 'stop' => '' },
+ 'symbol' => { 'start' => '',
+ 'stop' => '' },
+
+ 'function header' => { 'start' => '',
+ 'stop' => '' },
+ 'function header name' => { 'start' => '',
+ 'stop' => '' },
+ 'function header args' => { 'start' => '',
+ 'stop' => '' },
+
+ 'regex' => { 'start' => '',
+ 'stop' => '' },
+
+ 'text' => { 'start' => '',
+ 'stop' => ''},
+
+ # HTML
+ 'entity' => { 'start' => '',
+ 'stop' => '' },
+
+ # MAKEFILE
+ 'assignment' => { 'start' => '',
+ 'stop' => '' },
+ 'dependency line' => { 'start' => '',
+ 'stop' => '' },
+ 'dependency target' => { 'start' => '',
+ 'stop' => '' },
+ 'dependency continuation'=> { 'start' => '',
+ 'stop' => '' },
+ 'continuation' => { 'start' => '',
+ 'stop' => '' },
+ 'macro' => { 'start' => '',
+ 'stop' => '' },
+ 'int macro' => { 'start' => '',
+ 'stop' => '' },
+ 'esc $$$' => { 'start' => '',
+ 'stop' => '' }
+ }
+ };
+# html-light is also called html
+
+$STYLESHEET{'html'} = $STYLESHEET{'html-light'};
+
+
+# html-nobc is a modification of html-light
+# in such a way, that the body tag does not define
+# a background and a text color
+# nobc stands for no body colors.
+
+%{$STYLESHEET{'html-nobg'}} = %{$STYLESHEET{'html-light'}};
+${ $STYLESHEET{'html-nobg'}} {'template'} = '
+
+ %%title%%
+
+
+
+%%code%%
+
+syntax highlighted by
+Code2HTML, v. %%version%%
+
+
+';
+
+
+# html-dark is a modification of html-light
+# in such a way, that the body tag does define
+# different colors and that the colors are different.
+
+%{$STYLESHEET{'html-dark'}} = %{$STYLESHEET{'html-light'}};
+${ $STYLESHEET{'html-dark'}} {'template'} = '
+
+ %%title%%
+
+
+
+%%code%%
+
+syntax highlighted by
+Code2HTML, v. %%version%%
+
+
+';
+${ $STYLESHEET{'html-dark'}} {'tags'} = {
+ 'comment' => { 'start' => '',
+ 'stop' => '' },
+ 'doc comment' => { 'start' => '',
+ 'stop' => '' },
+ 'string' => { 'start' => '',
+ 'stop' => '' },
+ 'esc string' => { 'start' => '',
+ 'stop' => '' },
+ 'character' => { 'start' => '',
+ 'stop' => '' },
+ 'esc character' => { 'start' => '',
+ 'stop' => '' },
+ 'numeric' => { 'start' => '',
+ 'stop' => '' },
+
+ 'identifier' => { 'start' => '',
+ 'stop' => '' },
+ 'predefined identifier' => { 'start' => '',
+ 'stop' => '' },
+
+ 'type' => { 'start' => '',
+ 'stop' => '' },
+ 'predefined type' => { 'start' => '',
+ 'stop' => '' },
+
+ 'reserved word' => { 'start' => '',
+ 'stop' => '' },
+ 'library function' => { 'start' => '',
+ 'stop' => '' },
+
+ 'include' => { 'start' => '',
+ 'stop' => '' },
+ 'preprocessor' => { 'start' => '',
+ 'stop' => '' },
+
+ 'braces' => { 'start' => '',
+ 'stop' => '' },
+ 'symbol' => { 'start' => '',
+ 'stop' => '' },
+
+ 'function header' => { 'start' => '',
+ 'stop' => '' },
+ 'function header name' => { 'start' => '',
+ 'stop' => '' },
+ 'function header args' => { 'start' => '',
+ 'stop' => '' },
+
+ 'regex' => { 'start' => '',
+ 'stop' => '' },
+
+ 'text' => { 'start' => '',
+ 'stop' => ''},
+
+ # HTML
+ 'entity' => { 'start' => '',
+ 'stop' => '' },
+
+ # MAKEFILE
+ 'assignment' => { 'start' => '',
+ 'stop' => '' },
+ 'dependency line' => { 'start' => '',
+ 'stop' => '' },
+ 'dependency target' => { 'start' => '',
+ 'stop' => '' },
+ 'dependency continuation'=> { 'start' => '',
+ 'stop' => '' },
+ 'continuation' => { 'start' => '',
+ 'stop' => '' },
+ 'macro' => { 'start' => '',
+ 'stop' => '' },
+ 'int macro' => { 'start' => '',
+ 'stop' => '' },
+ 'esc $$$' => { 'start' => '',
+ 'stop' => '' }
+ };
+
+
+return \%STYLESHEET;
+
+};
+
+
+
+#############################################################################
+####################### get_default_database ################################
+#############################################################################
+sub get_default_database
+{
+
+my %LANGUAGE;
+
+# written by PP
+$LANGUAGE{'plain'} = {
+ 'filename' => '',
+ 'regex' => '',
+ 'patterns' => []
+ };
+
+
+
+
+
+
+# taken from nedit
+# modified by PP
+$LANGUAGE{'ada'} = {
+ 'filename' => '(?i)\\.a(d[asb]?)?$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'Comments',
+ 'regex' => '--.*?$',
+ 'style' => 'comment',
+ 'childregex' => [],
+ },
+ {
+ 'name' => 'String Literals',
+ 'regex' => '".*?("|$)',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Character Literals',
+ 'regex' => '\'.\'',
+ 'style' => 'character',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Ada Attributes',
+ 'regex' => '\'[a-zA-Z][a-zA-Z_]+\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Numeric Literals',
+ 'regex' => '(((2|8|10|16)#[_0-9a-fA-F]*#)|[0-9.]+)',
+ 'style' => 'numeric',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Withs Pragmas Use',
+ 'regex' => '\\b(?i)((with|pragma|use)[ \\t\\n\\f\\r]+[a-zA-Z0-9_.]+;)+\\b',
+ 'style' => 'include',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Predefined Types',
+ 'regex' => '\\b(?i)(boolean|character|count|duration|float|integer|long_float|long_integer|priority|short_float|short_integer|string)\\b',
+ 'style' => 'predefined type',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Predefined Subtypes',
+ 'regex' => '\\b(?i)field|natural|number_base|positive|priority\\b',
+ 'style' => 'predefined type',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Reserved Words',
+ 'regex' => '\\b(?i)(abort|abs|accept|access|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|is|limited|loop|mod|new|not|null|of|or|others|out|package|pragma|private|procedure|raise|range|record|rem|renames|return|reverse|select|separate|subtype|task|terminate|then|type|use|when|while|with|xor)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Ada 95 Only',
+ 'regex' => '\\b(?i)(abstract|tagged|all|protected|aliased|requeue|until)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Identifiers',
+ 'regex' => '\\b[a-zA-Z][a-zA-Z0-9_]*\\b',
+ 'style' => 'identifier',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Dot All',
+ 'regex' => '(?i)\\.all\\b',
+ 'style' => 'predefined identifier',
+ 'childregex' => []
+ }
+ ]
+ };
+$LANGUAGE{'ada95'} = $LANGUAGE{'ada'};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# written by JA
+$LANGUAGE{'awk'} = {
+ 'filename' => '(?i)\\.awk$',
+ 'regex' => '^\\s*#\\s*![^\\s]*awk',
+ 'patterns' => [
+ {
+ 'name' => 'comment',
+ 'regex' => '#.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '""|".*?([^\\\\](\\\\\\\\)*)"|"\\\\\\\\"',
+# 'regex' => '""|"\\\\\\\\"|"[^"\\\\]"|"[^"].*?[^\\\\]"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '\'\'|\'.*?([^\\\\](\\\\\\\\)*)\'|\'\\\\\\\\\'',
+# 'regex' => '\'\'|\'\\\\\\\\\'|\'[^\'\\\\]\'|\'[^\'].*?[^\\\\]\'',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'function header',
+ 'regex' => 'function[\\t ]+([a-zA-Z0-9_]+)[\\t \\n]*(\\{|\\n)',
+ 'style' => 'function header',
+ 'childregex' => [
+ {
+ 'name' => 'function coloring',
+ 'regex' => '[\\t ]([a-zA-Z0-9_]+)',
+ 'style' => 'function header name',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'regex matching I 1',
+ 'regex' => '(\\b| )?(/)(\\\\/|[^/\\n])*(/[gimesox]*)',
+ 'style' => 'regex',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'regex matching I 2',
+ 'regex' => '(?:\\b| )(?:(?:m|q|qq)([!"#$%&\'*+-/]))(\\\\\\2|[^\\2\\n])*(\\2[gimesox]*)',
+ 'style' => 'regex',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'regex matching II',
+ 'regex' => '(?:\\b| )?(?:s([!"#$%&\'*+-/]))(?:\\\\\\2|[^\\2\\n])*?(\\2)[^(\\2)\\n]*?(\\2[gimesox]*)',
+ 'style' => 'regex',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'translate',
+ 'regex' => '(?:\\b| )(?:(?:tr|y)([^\w\s]))(?:\\\\\\2|[^\\2\\n])*?(\\2)[^(\\2)\\n]*?(\\2[gimesox]*)',
+ 'style' => 'regex',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keywords',
+ 'regex' => '\\b(BEGIN|END|ARGC|ARGIND|ARGV|CONVFMT|ENVIRON|ERRNO|FIELDWIDTHS|FILENAME|FNR|FS|IGNORECASE|NF|NR|OFMT|OFS|ORS|RS|RT|RSTART|RLENGTH|SUBSEP)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keywords 2',
+ 'regex' => '\\b(if|while|do|for|in|break|continue|delete|exit|next|nextfile|function)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'library fns',
+ 'regex' => '\\b(close|getline|print|printf|system|fflush|atan2|cos|exp|int|log|rand|sin|sqrt|srand|gensub|gsub|index|length|split|sprintf|sub|substr|tolower|toupper|systime|strftime)\\b',
+ 'style' => 'library function',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'braces and parens',
+ 'regex' => '[\\[\\]\\{\\}\\(\\)]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => '<< stuff',
+ 'regex' => '<<\'([^\\n]*)\';.*?^\\2$',
+ 'style' => 'text',
+ 'childregex' => []
+ },
+ {
+ 'name' => '<< stuff',
+ 'regex' => '<<([^\\n]*).*?^\\2$',
+ 'style' => 'text',
+ 'childregex' => []
+ }
+ ]
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# taken from nedit
+# modified by PP
+$LANGUAGE{'c'} = {
+ 'filename' => '\\.[ch]$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'doc comment',
+ 'regex' => '/\\*\\*.*?\\*/',
+ 'style' => 'doc comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment',
+ 'regex' => '/\\*.*?\\*/',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '""|".*?([^\\\\](\\\\\\\\)*)"|"\\\\\\\\"',
+# 'regex' => '""|"\\\\\\\\"|"[^"\\\\]"|"[^"].*?[^\\\\]"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'preprocessor line',
+ 'regex' => '^[ \\t]*#.*?$',
+ 'style' => 'preprocessor',
+ 'childregex' => [
+ {
+ 'name' => 'string',
+ 'regex' => '""|".*?([^\\\\](\\\\\\\\)*)"|"\\\\\\\\"',
+# 'regex' => '""|"\\\\\\\\"|"[^"\\\\]"|"[^"].*?[^\\\\]"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => '',
+ 'regex' => '<.*?>',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment',
+ 'regex' => '[^/]/\\*.*?\\*/',
+ 'style' => 'comment',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'character constant',
+ 'regex' => '\'(\\\\)?.\'',
+ 'style' => 'character',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'numeric constant',
+ 'regex' => '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b',
+ 'style' => 'numeric',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'storage keyword',
+ 'regex' => '\\b(const|extern|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keyword',
+ 'regex' => '\\b(return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'braces',
+ 'regex' => '[\\{\\}]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'symbols',
+ 'regex' => '([\\*\\-\\+=:;%&\\|<>\\(\\)\\[\\]!])',
+ 'style' => 'symbol',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'identifiers',
+ 'regex' => '([a-zA-Z_][a-zA-Z_0-9]*)',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# taken from nedit
+# modified by PP
+$LANGUAGE{'c++'} = {
+ 'filename' => '\\.(c(c|pp|xx)|h(h|pp|xx)|C(C|PP|XX)?|H(H|PP|XX)?|i)$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'doc comment',
+ 'regex' => '/\\*\\*.*?\\*/',
+ 'style' => 'doc comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment',
+ 'regex' => '/\\*.*?\\*/',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'cplus comment',
+ 'regex' => '//.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '""|"\\\\\\\\"|".*?([^\\\\](\\\\\\\\)*)"',
+# 'regex' => '""|"\\\\\\\\"|"[^"\\\\]"|"[^"].*?[^\\\\]"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'preprocessor line',
+ 'regex' => '^[ \\t]*#.*?$',
+ 'style' => 'preprocessor',
+ 'childregex' => [
+ {
+ 'name' => 'string',
+ 'regex' => '""|".*?([^\\\\](\\\\\\\\)*)"|"\\\\\\\\"',
+# 'regex' => '""|"\\\\\\\\"|"[^"\\\\]"|"[^"].*?[^\\\\]"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => '',
+ 'regex' => '<.*?>',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment',
+ 'regex' => '[^/]/\\*.*?\\*/',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'cplus comment',
+ 'regex' => '//.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'character constant',
+ 'regex' => '\'(\\\\)?.\'',
+ 'style' => 'character',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'numeric constant',
+ 'regex' => '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b',
+ 'style' => 'numeric',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'storage keyword',
+ 'regex' => '\\b(class|typename|typeid|template|friend|virtual|inline|explicit|operator|overload|public|private|protected|const|extern|auto|register|static|mutable|unsigned|signed|volatile|char|double|float|int|long|short|bool|wchar_t|void|typedef|struct|union|enum)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => [],
+ },
+ {
+ 'name' => 'keyword',
+ 'regex' => '\\b(new|delete|this|return|goto|if|else|case|default|switch|break|continue|while|do|for|catch|throw|sizeof|true|false|namespace|using|dynamic_cast|static_cast|reinterpret_cast)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'braces',
+ 'regex' => '[\\{\\}]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'symbols',
+ 'regex' => '([\\*\\-\\+=:;%&\\|<>\\(\\)\\[\\]!])',
+ 'style' => 'symbol',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'identifiers',
+ 'regex' => '([a-zA-Z_][a-zA-Z_0-9]*)',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ };
+$LANGUAGE{'cc'} = $LANGUAGE{'c++'};
+$LANGUAGE{'cpp'} = $LANGUAGE{'c++'};
+$LANGUAGE{'cxx'} = $LANGUAGE{'c++'};
+
+
+
+
+
+
+
+
+
+
+# written by VRS
+$LANGUAGE{'gpasm'} = {
+ 'filename' => '(?i)\\.(asm|inc)$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'args',
+ 'regex' => '^.*$',
+ 'style' => 'symbol',
+ 'childregex' => [
+ {
+ 'name' => 'comment',
+ 'regex' => ';.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'labels',
+ 'regex' => '^[A-Za-z_][A-Za-z_0-9]*:?',
+ 'style' => 'identifier',
+ 'childregex' => []
+ },
+
+ {
+ 'name' => 'menonics',
+ 'regex' => '^[ \t]+[A-Za-z_][A-Za-z_0-9]*',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '""|".*?([^\\\\](\\\\\\\\)*)"|"\\\\\\\\"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ }
+
+
+ ]
+ }
+ ]
+ };
+
+
+
+
+
+
+
+
+# written by JA
+$LANGUAGE{'groff'} = {
+ 'filename' => '\\.groff$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'comment',
+ 'regex' => '\\\\".*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ }
+ ]
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# taken from nedit
+# modified by PP
+$LANGUAGE{'html'} = {
+ 'filename' => '(?i)\\.(html?|mhtml|php)$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'comment',
+ 'regex' => '',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'entity',
+ 'regex' => '\\&[-.a-zA-Z0-9#]*;?',
+ 'style' => 'entity',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'tag',
+ 'regex' => '<(/|!)?[-.a-zA-Z0-9]*.*?>',
+ 'style' => 'predefined identifier',
+ 'childregex' => [
+ {
+ 'name' => 'double quote string',
+ 'regex' => '".*?"',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'single quote string',
+ 'regex' => '\'.*?\'',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'brackets',
+ 'regex' => '[<>]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'attribute',
+ 'regex' => '[^\'" ]+(?=.)',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ }
+ ]
+ };
+
+
+
+# Added May 17, 2002, Jim M.
+$LANGUAGE{'xml'} = {
+ 'filename' => '(?i)\\.(xml|xps|xsl|axp|ppd)?$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'comment',
+ 'regex' => '',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'entity',
+ 'regex' => '\\&[-.a-zA-Z0-9#]*;?',
+ 'style' => 'entity',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'tag',
+ 'regex' => '<(/|!)?[-.a-zA-Z0-9]*.*?>',
+ 'style' => 'predefined identifier',
+ 'childregex' => [
+ {
+ 'name' => 'double quote string',
+ 'regex' => '".*?"',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'single quote string',
+ 'regex' => '\'.*?\'',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'brackets',
+ 'regex' => '[<>]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'attribute',
+ 'regex' => '[^\'" ]+(?=.)',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ }
+ ]
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# taken from nedit
+# modified by PP
+$LANGUAGE{'java'} = {
+ 'filename' => '\\.java$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'doc comment',
+ 'regex' => '/\\*\\*.*?\\*/',
+ 'style' => 'doc comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment',
+ 'regex' => '/\\*.*?\\*/',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'cplus comment',
+ 'regex' => '//.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '""|".*?([^\\\\](\\\\\\\\)*)"|"\\\\\\\\"',
+# 'regex' => '""|"\\\\\\\\"|"[^"\\\\]"|"[^"].*?[^\\\\]"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'single quoted',
+ 'regex' => '\'\'|\'.*?([^\\\\](\\\\\\\\)*)\'|\'\\\\\\\\\'',
+# 'regex' => '\'\'|\'\\\\\\\\\'|\'[^\'\\\\]\'|\'[^\'].*?[^\\\\]\'',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'numeric constant',
+ 'regex' => '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b',
+ 'style' => 'numeric',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'include',
+ 'regex' => '\\b(import|package)\\b.*?$',
+ 'style' => 'include',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\(.|\\n)',
+ 'style' => 'esc character',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment',
+ 'regex' => '[^/]/\\*.*?\\*/',
+ 'style' => 'comment',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'storage keyword',
+ 'regex' => '\\b(abstract|boolean|byte|char|class|double|extends|final|float|int|interface|long|native|private|protected|public|short|static|transient|synchronized|void|volatile|implements)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keyword',
+ 'regex' => '\\b(break|case|catch|continue|default|do|else|false|finally|for|if|instanceof|new|null|return|super|switch|this|throw|throws|true|try|while)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'braces and parens',
+ 'regex' => '[\\{\\}\\(\\)\\[\\]]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Identifiers',
+ 'regex' => '\\b[a-zA-Z_][a-zA-Z0-9_]*\\b',
+ 'style' => 'identifier',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'symbols',
+ 'regex' => '([\\*\\-\\+=:;%&\\|<>!])',
+ 'style' => 'symbol',
+ 'childregex' => []
+ }
+ ]
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# taken from nedit
+# modified by PP
+$LANGUAGE{'javascript'} = {
+ 'filename' => '(?i)\\.js$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'comment',
+ 'regex' => '/\\*.*?\\*/',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'cplus comment',
+ 'regex' => '//.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'numeric constant',
+ 'regex' => '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b',
+ 'style' => 'numeric',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'events',
+ 'regex' => '\\b(onAbort|onBlur|onClick|onChange|onDblClick|onDragDrop|onError|onFocus|onKeyDown|onKeyPress|onLoad|onMouseDown|onMouseMove|onMouseOut|onMouseOver|onMouseUp|onMove|onResize|onSelect|onSubmit|onUnload)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'braces',
+ 'regex' => '[\\{\\}]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'statements',
+ 'regex' => '\\b(break|continue|else|for|if|in|new|return|this|typeof|var|while|with)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'function',
+ 'regex' => 'function[\\t ]+([a-zA-Z0-9_]+)[\\t \\(]+.*?[\\n{]',
+ 'style' => 'function header',
+ 'childregex' => [
+ {
+ 'name' => 'function args',
+ 'regex' => '\\(.*?\\)',
+ 'style' => 'function header args',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'function name',
+ 'regex' => '[\\t ][a-zA-Z0-9_]+',
+ 'style' => 'function header name',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'built in object type',
+ 'regex' => '\\b(anchor|Applet|Area|Array|button|checkbox|Date|document|elements|FileUpload|form|frame|Function|hidden|history|Image|link|location|Math|navigator|Option|password|Plugin|radio|reset|select|string|submit|text|textarea|window)\\b',
+ 'style' => 'predefined type',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '".*?("|$)',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'colors',
+ 'regex' => '(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|#008000|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|#[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9])',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '\'.*?(\'|$)',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'colors',
+ 'regex' => '(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|#008000|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|#[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9])',
+ 'style' => 'identifier',
+ 'childregex' => [],
+ }
+ ]
+ },
+ {
+ 'name' => 'event capturing',
+ 'regex' => '\\b(captureEvents|releaseEvents|routeEvent|handleEvent)\\b.*?(\\)|$)',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'predefined methods',
+ 'regex' => '\\b(abs|acos|alert|anchor|asin|atan|atan2|back|big|blink|blur|bold|ceil|charAt|clear|clearTimeout|click|close|confirm|cos|escape|eval|exp|fixed|floor|focus|fontcolor|fontsize|forward|getDate|getDay|getHours|getMinutes|getMonth|getSeconds|getTime|getTimezoneOffset|getYear|go|indexOf|isNaN|italics|javaEnabled|join|lastIndexOf|link|log|max|min|open|parse|parseFloat|parseInt|pow|prompt|random|reload|replace|reset|reverse|round|scroll|select|setDate|setHours|setMinutes|setMonth|setSeconds|setTimeout|setTime|setYear|sin|small|sort|split|sqrt|strike|sub|submit|substring|sup|taint|tan|toGMTString|toLocaleString|toLowerCase|toString|toUpperCase|unescape|untaint|UTC|write|writeln)\\b',
+ 'style' => 'library function',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'properties',
+ 'regex' => '\\b(action|alinkColor|anchors|appCodeName|appName|appVersion|bgColor|border|checked|complete|cookie|defaultChecked|defaultSelected|defaultStatus|defaultValue|description|E|elements|enabledPlugin|encoding|fgColor|filename|forms|frames|hash|height|host|hostname|href|hspace|index|lastModified|length|linkColor|links|LN2|LN10|LOG2E|LOG10E|lowsrc|method|name|opener|options|parent|pathname|PI|port|protocol|prototype|referrer|search|selected|selectedIndex|self|SQRT1_2|SQRT2|src|status|target|text|title|top|type|URL|userAgent|value|vlinkColor|vspace|width|window)\\b',
+ 'style' => 'predefined identifier',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'operators',
+ 'regex' => '([=;->/&|])',
+ 'style' => 'symbol',
+ 'childregex' => []
+ }
+ ]
+ };
+$LANGUAGE{'js'} = $LANGUAGE{'javascript'};
+
+
+
+
+
+
+
+
+# written by Andreas Krennmair
+# extremely incomplete
+
+$LANGUAGE{'lisp'} = {
+ 'filename' => '\\.(lsp|l)$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'parens',
+ 'regex' => '[()]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment',
+ 'regex' => ';.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '".*?("|$)',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keywords',
+ 'regex' => '\\b(defun |xyz)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'numeric constant',
+ 'regex' => '(#\([0-9]+ [0-9]+\)|[0-9]+)',
+ 'style' => 'numeric',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'identifiers',
+ 'regex' => '([-a-zA-Z]+)',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ };
+
+
+
+
+
+
+
+
+
+
+# written by JA
+$LANGUAGE{'m4'} = {
+ 'filename' => '\\.m4$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'regex' => 'dnl.*?$',
+ 'style' => 'doc comment',
+ 'childregex' => []
+ },
+ {
+ 'regex' => '#.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'regex' => '\\b(define|undefine|defn|pushdef|popdef|indir|builtin|changequote|changecom|changeword|m4wrap|m4exit|include|sinclude|divert|undivert|divnum|cleardiv|shift|dumpdef|traceon|traceoff|debugfile|debugmode|len|index|regexp|substr|translit|patsubst|format|incr|decr|syscmd|esyscmd|sysval|maketemp|errprint)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'regex' => '\\b(ifdef|ifelse|loops)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => [
+ {
+ 'regex' => '[$]\\$?({[^}]*}|[^a-zA-Z0-9_/\\t\\n\\.,\\\\[\\\\{\\\\(]|[0-9]+|[a-zA-Z_][a-zA-Z0-9_]*)?',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ }
+ ]
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# taken from nedit
+# modified by PP
+$LANGUAGE{'make'} = {
+ 'filename' => '[Mm]akefile.*',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'Comment',
+ 'regex' => '#.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Assignment',
+ 'regex' => '^( *| [ \\t]*)[A-Za-z0-9_+]*[ \\t]*(\\+|:)?=',
+ 'style' => 'assignment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Dependency Line',
+ 'regex' => '^ *([A-Za-z0-9./$(){} _%+-]|\\n)*::?',
+ 'style' => 'dependency line',
+ 'childregex' => [
+ {
+ 'name' => 'Dependency Target',
+ 'regex' => '[A-Za-z0-9./$(){} _%+-]+',
+ 'style' => 'dependency target',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Dependency Continuation',
+ 'regex' => '\\\\\\n',
+ 'style' => 'dependency continuation',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment',
+ 'regex' => '#.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'macro',
+ 'regex' => '\\$([A-Za-z0-9_]|\\([^)]*\\)|{[^}]*})',
+ 'style' => 'macro',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'int macro',
+ 'regex' => '\\$([<@*?%]|\\$@)',
+ 'style' => 'int macro',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'Continuation',
+ 'regex' => '\\\\$',
+ 'style' => 'continuation',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Macro',
+ 'regex' => '\\$([A-Za-z0-9_]|\\([^)]*\\)|{[^}]*})',
+ 'style' => 'macro',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Internal Macro',
+ 'regex' => '\\$([<@*?%]|\\$@)',
+ 'style' => 'int macro',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Escaped $$$',
+ 'regex' => '\\$\\$',
+ 'style' => 'esc $$$',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'Include',
+ 'regex' => '^include[ \\t]',
+ 'style' => 'include',
+ 'childregex' => []
+ }
+ ]
+ };
+$LANGUAGE{'makefile'} = $LANGUAGE{'make'};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# taken from nedit
+# modified by PP
+$LANGUAGE{'pas'} = {
+ 'filename' => '(?i)\\.p(as)?$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'comment1 (* *)',
+ 'regex' => '\\(\\*.*?\\*\\)',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment2 { }',
+ 'regex' => '\\{.*?\\}',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '\'.*?(\'|$)',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'preprocessor line',
+ 'regex' => '^[ \\t]*#.*?$',
+ 'style' => 'preprocessor',
+ 'childregex' => [
+ {
+ 'name' => 'comment1 (* *)',
+ 'regex' => '\\(\\*.*?\\*\\)',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment2 { }',
+ 'regex' => '\\{.*?\\}',
+ 'style' => 'comment',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'character constant',
+ 'regex' => '\'.\'',
+ 'style' => 'character',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'numeric constant',
+ 'regex' => '\\b((0(x|X)[0-9a-fA-F]*)|[0-9.]+((e|E)(\\+|-)?)?[0-9]*)(L|l|UL|ul|u|U|F|f)?\\b',
+ 'style' => 'numeric',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'storage and ops',
+ 'regex' => '\\b(?i)(and|array|const|div|export|file|function|import|in|label|mod|module|nil|not|only|or|packed|pow|pragma|procedure|program|protected|qualified|record|restricted|set|type|var)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keywords',
+ 'regex' => '\\b(?i)(begin|case|do|downto|else|end|for|goto|if|of|otherwise|repeat|then|to|until|while|with)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'sumbols',
+ 'regex' => '([\\*\\-\\+=:;<>\\(\\)\\[\\]!]|[^/]/[^/])',
+ 'style' => 'symbol',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'identifiers',
+ 'regex' => '([a-zA-Z_][a-zA-Z_0-9.^]*[a-zA-Z_0-9]|[a-zA-Z_][a-zA-Z_0-9]*)',
+ 'style' => 'identifier',
+ 'childregex' => [
+ {
+ 'regex' => '(\\.|\\^)+',
+ 'style' => 'symbol',
+ 'childregex' => []
+ }
+ ]
+ }
+ ],
+ };
+$LANGUAGE{'pascal'} = $LANGUAGE{'pas'};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# taken from nedit
+# modified by PP
+# modified by BS
+# modified by JD
+# modified by JP
+$LANGUAGE{'perl'} = {
+ 'filename' => '(?i)\\.p([lm5]|od)$',
+ 'regex' => '^\\s*#\\s*!([^\\s]*\\b|.*env\\s+)perl',
+ 'patterns' => [
+ {
+ 'name' => 'comment',
+ 'regex' => '(?:#.*?(?:\r?\n\s*)+)+',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'variables',
+ 'regex' => '[\\$@%]\\$?(?:{[^}]*}|[^a-zA-Z0-9_/\\t\\n\\.,\\\\[\\\\{\\\\(]|[0-9]+|[a-zA-Z_][a-zA-Z0-9_]*)?',
+ 'style' => 'identifier',
+ 'childregex' => []
+ },
+ {
+ 'name' => '"" string',
+ 'regex' => '""|".*?([^\\\\](\\\\\\\\)*)"|"\\\\\\\\"',
+# 'regex' => '""|"\\\\\\\\"|"[^"\\\\]"|"[^"].*?[^\\\\]"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'variables',
+ 'regex' => '[\\$@%]\\$?(?:{[^}]*}|[^a-zA-Z0-9_/\\t\\n\\.,\\\\[\\\\{\\\\(]|[0-9]+|[a-zA-Z_][a-zA-Z0-9_]*)?',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => '\'\' string',
+ 'regex' => '\'\'|\'.*?([^\\\\](\\\\\\\\)*)\'|\'\\\\\\\\\'',
+# 'regex' => '\'\'|\'\\\\\\\\\'|\'[^\'\\\\]\'|\'[^\'].*?[^\\\\]\'',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'more strings - q// qw//',
+ 'regex' => '(?:\\b| )(?:q|qw)([^\w\s])(?:\\\\\\2|[^\\2\\n])*\\2',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'more strings - qq// qx//',
+ 'regex' => '(?:\\b| )(?:qq|qx)([^\w\s])(?:\\\\\\2|[^\\2\\n])*\\2',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'variables',
+ 'regex' => '[\\$@%]\\$?(?:{[^}]*}|[^a-zA-Z0-9_/\\t\\n\\.,\\\\[\\\\{\\\\(]|[0-9]+|[a-zA-Z_][a-zA-Z0-9_]*)?',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'subroutine header',
+ 'regex' => 'sub[\\t ]+(?:[a-zA-Z0-9_]+)[\\t \\n]*(?:\\{|\\(|\\n)',
+ 'style' => 'function header',
+ 'childregex' => [
+ {
+ 'name' => 'subroutine header coloring',
+ 'regex' => '[\\t ][a-zA-Z0-9_]+',
+ 'style' => 'function header name',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'regex matching I',
+ 'regex' => '(?:\\b| )?(?:/(?:\\\\/|[^/\\n])*(?:/[gimesox]*)|s([^\w\s])(?:\\\\\\2|[^\\2\\n])*?(\\2)[^(\\2)\\n]*?(\\2[gimesox]*))',
+ 'style' => 'regex',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'regex matching II',
+ 'regex' => '(?:\\b| )(?:m|qq?|tr|y)([^\w\s])(?:\\\\\\2|[^\\2\\n])*(?:\\2[gimesox]*)',
+ 'style' => 'regex',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keywords',
+ 'regex' => '\\b(my|local|new|if|until|while|elsif|else|eval|unless|for|foreach|continue|exit|die|last|goto|next|redo|return|local|exec|do|use|require|package|eval|BEGIN|END|eq|ne|not|\\|\\||\\&\\&|and|or)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'library functions',
+ 'regex' => '\\b(?:a(?:bs|ccept|larm|tan2)|b(?:ind|inmode|less)|c(?:aller|hdir|hmod|homp|hop|hr|hroot|hown|losedir|lose|onnect|os|rypt)|d(?:bmclose|bmopen|efined|elete|ie|ump)|e(?:ach|nd(?:grent|hostent|netent|protoent|pwent|servent)|of|xec|xists|xp)|f(?:ctnl|ileno|lock|ork|ormat|ormline)|g(?:et(?:c|grent|grgid|grnam|hostbyaddr|hostbyname|hostent|login|netbyaddr|netbyname|netent|peername|pgrp|ppid|priority|protobyname|protobynumber|protoent|pwent|pwnam|pwuid|servbyname|servbyport|servent|sockname|sockopt)|lob|mtime|rep)|hex|i(?:mport|ndex|nt|octl)|join|keys|kill|l(?:cfirst|c|ength|ink|isten|og|ocaltime|stat)|m(?:ap|kdir|sgctl|sgget|sgrcv)|no|o(?:ct|pendir|pen|rd)|p(?:ack|ipe|op|os|rintf|rint|ush)|quotemeta|r(?:and|eaddir|ead|eadlink|ecv|ef|ename|eset|everse|ewinddir|index|mdir)|s(?:calar|eekdir|eek|elect|emctl|emget|emop|end|et(?:grent|hostent|netent|pgrp|priority|protoent|pwent|sockopt)|hift|hmctl|hmget|hmread|hmwrite|hutdown|in|leep|ocket|ocketpair|ort|plice|plit|printf|qrt|rand|tat|tudy|ubstr|ymlink|yscall|ysopen|ysread|ystem|yswrite)|t(?:elldir|ell|ie|ied|ime|imes|runcate)|u(?:c|cfirst|mask|ndef|nlink|npack|nshift|ntie|time)|values|vec|w(?:ait|aitpid|antarray|arn|rite)|qw|-[rwxoRWXOezsfdlpSbctugkTBMAC])\\b',
+ 'style' => 'library function',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'braces, parens and brakets',
+ 'regex' => '[\\[\\]\\{\\}\\(\\)]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => '<< stuff',
+ 'regex' => '<<(?:("|\')([^\\n]*)\\2|\\w*).*?^\\3$',
+ 'style' => 'text',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'POD',
+ 'regex' => '^=.*?^(?:=cut|\\Z)',
+ 'style' => 'doc comment',
+ 'childregex' => []
+ }
+ ]
+ };
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Thanks to Matt Giwer
+$LANGUAGE{'pov'} = {
+ 'filename' => '(?i)\\.pov$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'doc comment',
+ 'regex' => '/\\*\\*.*?\\*/',
+ 'style' => 'doc comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment',
+ 'regex' => '/\\*.*?\\*/',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'cplus comment',
+ 'regex' => '//.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '""|".*?([^\\\\](\\\\\\\\)*)"|"\\\\\\\\"',
+# 'regex' => '""|"\\\\\\\\"|"[^"\\\\]"|"[^"].*?[^\\\\]"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'preprocessor line',
+ 'regex' => '^[ \\t]*#.*?$',
+ 'style' => 'preprocessor',
+ 'childregex' => [
+ {
+ 'name' => 'string',
+ 'regex' => '""|".*?([^\\\\](\\\\\\\\)*)"|"\\\\\\\\"',
+# 'regex' => '""|"\\\\\\\\"|"[^"\\\\]"|"[^"].*?[^\\\\]"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => '',
+ 'regex' => '<.*?>',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment',
+ 'regex' => '[^/]/\\*.*?\\*/',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'cplus comment',
+ 'regex' => '//.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'character constant',
+ 'regex' => '\'(\\\\)?.\'',
+ 'style' => 'character',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'numeric constant',
+ 'regex' => '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b',
+ 'style' => 'numeric',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keyword',
+ 'regex' => '\\b(abs|absorption|acos|acosh|adaptive|adc_bailout|agate|agate_turb|all|alpha|ambient|ambient_light|angle|aperture|append|arc_angle|area_light|array|asc|asin|asinh|assumed_gamma|atan|atan2|atanh|average|background|bezier_spline|bicubic_patch|black_hole|blob|blue|blur_samples|bounded_by|box|boxed|bozo|break|brick|brick_size|brightness|brilliance|bumps|bump_map|bump_size|camera|case|caustics|ceil|checker|chr|clipped_by|clock|clock_delta|color|color_map|colour|colour_map|component|composite|concat|cone|confidence|conic_sweep|control0|control1|cos|cosh|count|crackle|crand|cube|cubic|cubic_spline|cubic_wave|cylinder|cylindrical|debug|declare|default|defined|degrees|density|density_file|density_map|dents|difference|diffuse|dimensions|dimension_size|direction|disc|distance|distance_maximum|div|eccentricity|else|emission|end|error|error_bound|exp|extinction|fade_distance|fade_power|falloff|falloff_angle|false|fclose|file_exists|filter|finish|fisheye|flatness|flip|floor|focal_point|fog|fog_alt|fog_offset|fog_type|fopen|frequency|gif|global_settings|gradient|granite|gray_threshold|green|height_field|hexagon|hf_gray_16|hierarchy|hollow|hypercomplex|if|ifdef|iff|ifndef|image_map|include|int|interior|interpolate|intersection|intervals|inverse|ior|irid|irid_wavelength|jitter|julia_fractal|lambda|lathe|leopard|light_source|linear_spline|linear_sweep|local|location|log|looks_like|look_at|low_error_factor|macro|mandel|map_type|marble|material|material_map|matrix|max|max_intersections|max_iteration|max_trace_level|media|media_attenuation|media_interaction|merge|mesh|metallic|min|minimum_reuse|mod|mortar|nearest_count|no|normal|normal_map|no_shadow|number_of_waves|object|octaves|off|offset|omega|omnimax|on|once|onion|open|orthographic|panoramic|perspective|pgm|phase|phong|phong_size|pi|pigment|pigment_map|planar|plane|png|point_at|poly|polygon|poly_wave|pot|pow|ppm|precision|prism|pwr|quadratic_spline|quadric|quartic|quaternion|quick_color|quick_colour|quilted|radial|radians|radiosity|radius|rainbow|ramp_wave|rand|range|ratio|read|reciprocal|recursion_limit|red|reflection|reflection_exponent|refraction|render|repeat|rgb|rgbf|rgbft|rgbt|right|ripples|rotate|roughness|samples|scale|scallop_wave|scattering|seed|shadowless|sin|sine_wave|sinh|sky|sky_sphere|slice|slope_map|smooth|smooth_triangle|sor|specular|sphere|spherical|spiral1|spiral2|spotlight|spotted|sqr|sqrt|statistics|str|strcmp|strength|strlen|strlwr|strupr|sturm|substr|superellipsoid|switch|sys|t|tan|tanh|text|texture|texture_map|tga|thickness|threshold|tightness|tile2|tiles|torus|track|transform|translate|transmit|triangle|triangle_wave|true|ttf|turbulence|turb_depth|type|u|ultra_wide_angle|undef|union|up|use_color|use_colour|use_index|u_steps|v|val|variance|vaxis_rotate|vcross|vdot|version|vlength|vnormalize|vrotate|v_steps|warning|warp|water_level|waves|while|width|wood|wrinkles|write|x|y|yes|z)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'braces',
+ 'regex' => '[\\{\\}]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'symbols',
+ 'regex' => '([\\*\\-\\+=:;%&\\|<>\\(\\)\\[\\]!])',
+ 'style' => 'symbol',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'identifiers',
+ 'regex' => '([a-zA-Z_][a-zA-Z_0-9]*)',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ };
+$LANGUAGE{'povray'} = $LANGUAGE{'pov'};
+
+
+
+
+# by Tom Good
+$LANGUAGE{'python'} = {
+ 'filename' => '(?i)\\.py$',
+ 'regex' => '^\\s*#\\s*![^\\s]*python',
+ 'patterns' => [
+ {
+ 'name' => 'python comment',
+ 'regex' => '#.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'single quote string',
+ 'regex' => '\'.*?\'',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+
+ {
+ 'name' => 'string',
+ 'regex' => '""|"\\\\\\\\"|".*?([^\\\\](\\\\\\\\)*)"',
+ 'regex' => '""|".*?([^\\\\](\\\\\\\\)*)"|"\\\\\\\\"',
+ 'regex' => '""|"\\\\\\\\"|"[^"\\\\]"|"[^"].*?[^\\\\]"',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'character constant',
+ 'regex' => '\'(\\\\)?.\'',
+ 'style' => 'character',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '\\\\.',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'numeric constant',
+ 'regex' => '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b',
+ 'style' => 'numeric',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keyword',
+ 'regex' => '\\b(and|assert|break|class|continue|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'braces',
+ 'regex' => '[\\{\\}]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'symbols',
+ 'regex' => '([\\*\\-\\+=:;%&\\|<>\\(\\)\\[\\]!])',
+ 'style' => 'symbol',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'identifiers',
+ 'regex' => '([a-zA-Z_][a-zA-Z_0-9]*)',
+ 'style' => 'identifier',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'function',
+ 'regex' => '[\\t ]*def[\\t ]+([a-zA-Z0-9_]+)[\\t \\(]+.*?[\\n{]',
+ 'style' => 'function header',
+ 'childregex' => [
+ {
+ 'name' => 'function args',
+ 'regex' => '\\(.*?\\)',
+ 'style' => 'function header args',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'function name',
+ 'regex' => '[\\t ][a-zA-Z0-9_]+',
+ 'style' => 'function header name',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'library functions',
+ 'regex' => '\\b(__import__|abs|apply|buffer|callable|chr|cmp|coerce|compile|complex|delatter|dir|divmod|eval|execfile|filter|float|getattr|globals|hasattr|hash|hex|id|input|int|intern|isinstance|issubclass|len|list|locals|long|map|max|min|oct|open|ord|pow|range|raw_input|reduce|reload|repr|round|setattr|slice|str|tuple|type|unichr|unicode|vars|xrange|zip)\\b',
+ 'style' => 'library function',
+ 'childregex' => []
+ },
+ ]
+ };
+
+
+
+# by Joshua Swink
+$LANGUAGE{'ruby'} = {
+ 'filename' => '\\.rb$',
+ 'regex' => '^\\s*#\\s*![^\\s]*\\bruby\\b',
+ 'patterns' => [
+ {
+ 'name' => 'comment',
+ 'regex' => '(?:#.*?(?:\r?\n\s*)+)+',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'predefined variables',
+ 'regex' => '(?:\\$(?:[!@&`\'+\\d~=/\\\\,;.<>_*\\$?:"]|DEBUG|FILENAME|LOAD_PATH|stdin|stdout|stderr|VERBOSE|-[0adFiIlpv])|\\b(?:TRUE|FALSE|NIL|STDIN|STDOUT|STDERR|ENV|ARGF|ARGV|DATA|RUBY_VERSION|RUBY_RELEASE_DATE|RUBY_PLATFORM)\\b)',
+ 'style' => 'predefined identifier',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'variables',
+ 'regex' => '[\\$@](?:{[^}]*}|[^\\w/\\t\\n\\.,\\\\[\\\\{\\\\(]|[0-9]+|[a-zA-Z_][\\w.]*)?',
+ 'style' => 'identifier',
+ 'childregex' => []
+ },
+ {
+ 'name' => '"" string',
+ 'regex' => '""|"(?:\\\\\\\\)+"|".*?(?:[^\\\\](?:\\\\\\\\)*)"|%[Qwx]?([^\\w\\[\\](){}<>])\\2|%[Qwx]?([^\\w\\[\\](){}<>]).*?(?:[^\\\\](?:\\\\\\\\)*)\\3|%[Qwx]?([^\\w\\[\\](){}<>])\\\\\\\\\\4|%[Qwx]?\\[\\]|%[Qwx]?\\[.*?([^\\\\](\\\\\\\\)*)\\]|%[Qwx]?\\[\\\\\\\\\\]|%[Qwx]?\\{\\}|%[Qwx]?\\{.*?([^\\\\](\\\\\\\\)*)\\}|%[Qwx]?\\{\\\\\\\\\\}|%[Qwx]?\\(\\)|%[Qwx]?\\(.*?([^\\\\](\\\\\\\\)*)\\)|%[Qwx]?\\(\\\\\\\\\\)|%[Qwx]?<>|%[Qwx]?<.*?([^\\\\](\\\\\\\\)*)>|%[Qwx]?<\\\\\\\\>',
+
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex', => '\\\\(?:x[\\da-fA-F]{2}|\d\d\d|c.|M-\\\\C-.|M-.|C-.|.)',
+ 'style' => 'esc character',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string expression',
+ 'regex' => '#[\\$\\@][a-zA-Z_][\\w.]*|#\\{[\\$\\@]?[^\\}]*\\}',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => '\'\' string',
+ 'regex' => '\'\'|\'(?:\\\\\\\\)+\'|\'.*?(?:[^\\\\](?:\\\\\\\\)*)\'|%q([^\\w\\[\\](){}<>])\\2|%q([^\\w\\[\\](){}<>]).*?(?:[^\\\\](?:\\\\\\\\)*)\\3|%q([^\\w\\[\\](){}<>])\\\\\\\\\\4|%q\\[\\]|%q\\[.*?([^\\\\](\\\\\\\\)*)\\]|%q\\[\\\\\\\\\\]|%q\\{\\}|%q\\{.*?([^\\\\](\\\\\\\\)*)\\}|%q\\{\\\\\\\\\\}|%q\\(\\)|%q\\(.*?([^\\\\](\\\\\\\\)*)\\)|%q\\(\\\\\\\\\\)|%q<>|%q<.*?([^\\\\](\\\\\\\\)*)>|%q<\\\\\\\\>',
+ 'style' => 'string',
+ 'childregex' => [
+ {
+ 'name' => 'esc character',
+ 'regex' => '(?:\\\\\'|\\\\\\\\)',
+ 'style' => 'esc character',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'subroutine header',
+ 'regex' => 'def[\\t ]+\\w[\\w.]*(?:\\([^)]*\\))?',
+ 'style' => 'function header',
+ 'childregex' => [
+ {
+ 'name' => 'arg list',
+ 'regex' => '\\(.*\\)',
+ 'style' => 'function header args',
+ 'childregex' => [
+ {
+ 'name' => 'arg list parens',
+ 'regex' => '[\\(\\)]',
+ 'style' => 'symbol',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'subroutine header',
+ 'regex' => '[\\t ]\w+',
+ 'style' => 'function header name',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'class header',
+ 'regex' => 'class[\\t ]+\\w+(?:\\s*<\\s*\\w+)?',
+ 'style' => 'function header',
+ 'childregex' => [
+ {
+ 'name' => 'class ancestor',
+ 'regex' => '<\\s*\\w+',
+ 'style' => 'include',
+ 'childregex' => [
+ {
+ 'name' => 'inheritance doohickey',
+ 'regex' => '<',
+ 'style' => 'symbol',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'class main',
+ 'regex' => '[\\t ]\\w+',
+ 'style' => 'type',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'regex matching 0',
+ 'regex' => '(?:%r([^\\w\\[\\](){}<>])\\2|%r([^\\w\\[\\](){}<>]).*?(?:[^\\\\](?:\\\\\\\\)*)\\3|%r([^\\w\\[\\](){}<>])\\\\\\\\\\4|%r\\[\\]|%r\\[.*?([^\\\\](\\\\\\\\)*)\\]|%r\\[\\\\\\\\\\]|%r\\{\\}|%r\\{.*?([^\\\\](\\\\\\\\)*)\\}|%r\\{\\\\\\\\\\}|%r\\(\\)|%r\\(.*?([^\\\\](\\\\\\\\)*)\\)|%r\\(\\\\\\\\\\)|%r<>|%r<.*?([^\\\\](\\\\\\\\)*)>|%r<\\\\\\\\>)[ixpno]*',
+ 'style' => 'regex',
+ 'childregex' => [
+ {
+ 'name' => 'string expression',
+ 'regex' => '#[\\$\\@][a-zA-Z_][\\w.]*|#\\{[\\$\\@]?[a-zA-Z_][^\\}]*\\}',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'regex matching I',
+ 'regex' => '(?:\\b| )?(?:/(?:\\\\/|[^/\\n])*(?:/[ixpno]*))',
+ 'style' => 'regex',
+ 'childregex' => [
+ {
+ 'name' => 'string expression',
+ 'regex' => '#[\\$\\@][a-zA-Z_][\\w.]*|#\\{[\\$\\@]?[a-zA-Z_][^\\}]*\\}',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }
+ ]
+ },
+ {
+ 'name' => 'reserved words',
+ 'regex' => '\\b(BEGIN|class|ensure|nil|self|when|END|def|false|not|super|while|alias|defined|for|or|then|yield|and|do|if|redo|true|begin|else|in|rescue|undef|break|elsif|module|retry|unless|case|end|next|return|until)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'kernel module methods',
+ 'regex', => '\\b(Array|Float|Integer|String|at_exit|autoload|binding|caller|catch|chop|chomp|chomp!|eval|exec|exit|fail|fork|format|gets|global_variables|gsub|iterator|lambda|load|local_variables|loop|open|p|print|printf|proc|putc|puts|raise|rand|readline|readlines|require|select|sleep|split|sprintf|srand|sub|syscall|system|test|trace_var|trap|untrace_var)\\b',
+ 'style' => 'library function',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'braces, parens and brakets',
+ 'regex' => '[\\[\\]\\{\\}\\(\\)]',
+ 'style' => 'braces',
+ 'childregex' => []
+ },
+ {
+ 'name' => '<< stuff',
+ 'regex' => '<<(?:("|\')([^\\n]*)\\2|\\w*).*?^\\3$',
+ 'style' => 'text',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'symbols',
+ 'regex' => '(?:[:*-+<>=^!,/]+|\.\.+)',
+ 'style' => 'symbol',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'numbers',
+ 'regex' => '\d[\d.]*',
+ 'style' => 'numeric',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'embedded documentation',
+ 'regex' => '^=.*?^(?:=end|\\Z)',
+ 'style' => 'doc comment',
+ 'childregex' => []
+ }
+ ]
+ };
+
+# taken from nedit
+# modified by PP
+# very inclomplete!
+$LANGUAGE{'sql'} = {
+ 'filename' => '(?i)\\.sql$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'keywords I',
+ 'regex' => '(?i)(,|%|<|>|:=|=|\\(|\\)|\\bselect|on|from|order by|desc|where|and|or|not|null|true|false)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment I',
+ 'regex' => '--.*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'comment II',
+ 'regex' => '/\\*.*?\\*/',
+ 'style' => 'comment',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'string',
+ 'regex' => '\'\'|\'.*?([^\\\\](\\\\\\\\)*)\'|\'\\\\\\\\\'',
+# 'regex' => '(\'\'|\'[^\'\\\\]\'|\'[^\'].*?[^\\\\]\')',
+ 'style' => 'string',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keywords II',
+ 'regex' => '(?i)end if;|\\b(create|replace|begin|end|function|return|fetch|open|close|into|is|in|when|others|grant|on|to|exception|show|set|out|pragma|as|package)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'keywords III',
+ 'regex' => '(?i)\\balter\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'datatypes',
+ 'regex' => '(?i)\\b(integer|blol|date|numeric|character|varying|varchar|char)\\b',
+ 'style' => 'predefined type',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'words',
+ 'regex' => '(?i)\\b(constraint|key|references|primary|table|foreign|add|insert|group by)\\b',
+ 'style' => 'reserved word',
+ 'childregex' => []
+ }
+ ]
+ };
+
+
+
+
+# enhanced by W. Friebel
+$LANGUAGE{'patch'} = {
+ 'filename' => '(?i)\\.patch$|\\.diff$',
+ 'regex' => '',
+ 'patterns' => [
+ {
+ 'name' => 'header',
+ 'regex' => '^Index: .*?$|^===== .*?$|^diff .*?$|^--- .*?$|^\+\+\+ .*?$|^\*\*\* .*?$',
+ 'style' => 'separator',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'hunk',
+ 'regex' => '^@@ .*?$',
+ 'style' => 'line spec',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'from',
+ 'regex' => '^-.*?$',
+ 'style' => 'deletion',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'to',
+ 'regex' => '^\+.*?$',
+ 'style' => 'insertion',
+ 'childregex' => []
+ },
+ {
+ 'name' => 'mod',
+ 'regex' => '^\!.*?$',
+ 'style' => 'modification',
+ 'childregex' => []
+ },
+ ]
+ };
+
+
+
+#####
+#
+# LANGUAGE: shell script
+#
+
+$LANGUAGE{'shellscript'} = {
+ 'filename' => '\\.(sh|shell)$',
+ 'regex' => '^\\s*#\\s*![^\\s]*(sh|bash|ash|zsh|ksh)',
+ 'patterns' => [ {
+ 'name' => 'comment',
+# 'regex' => '^[ \t]*[^$]?\#[^!]?.*?$',
+ 'regex' => '(^| )#([^\\!].)*?$',
+ 'style' => 'comment',
+ 'childregex' => []
+ }, {
+ 'name' => 'identifier',
+ 'regex' => '[a-zA-Z][a-zA-Z0-9_]*=',
+ 'style' => 'identifier',
+ 'childregex' => [ {
+ 'name' => 'identifier',
+ 'regex' => '[a-zA-Z][a-zA-Z0-9_]*',
+ 'style' => 'identifier',
+ 'childregex' => []
+ } ]
+ }, {
+ 'name' => 'identifier',
+ 'regex' => '\\$([0-9#\\*]|[a-zA-Z][a-zA-Z0-9_]*)',
+ 'style' => 'identifier',
+ 'childregex' => []
+ }, {
+ 'name' => 'interpreter line',
+ 'regex' => '^[ \t]*#!.*?$',
+ 'style' => 'preprocessor',
+ childregex => []
+ }, {
+ 'name' => 'string',
+ 'regex' => '""|"(\\\\"|[^\\"])*"',
+ 'style' => 'string',
+ childregex => [ {
+ 'name' => 'identifier',
+ 'regex' => '\\$([0-9#\\*]|[a-zA-Z][a-zA-Z0-9_]*)',
+ 'style' => 'identifier',
+ 'childregex' => []
+ } ]
+ } ]
+};
+
+$LANGUAGE{'sh'} = $LANGUAGE{'shellscript'};
+return \%LANGUAGE;
+
+};
+use Getopt::Std;
+getopts('i:l:') || exit 2;
+ $str = main(parse_passed_params( infile => $ARGV[0] || '-',
+ outfile => '-',
+# linenumbers => 1 ,
+ langmode => $opt_l ,
+ outputformat => 'xterm' ,
+ # many other options
+ ));
+
+1;
+
+__END__
+
+=head1 Code2HTML
+
+ Convert source code (c,java,perl,html,...) into formatted html.
+
+=head1 SYNOPSIS
+
+ use Code2HTML;
+ $html = code2html( $sourcecode );
+ # or
+ code2html( infile => 'file.java' ,
+ outfile => 'file.html',
+ linenumbers => 1 ,
+ langmode => 'perl' ,
+ # many other options
+ );
+
+=head1 DESCRIPTION
+
+Code2HTML converts source code into color-coded, formatted html,
+either as a simple code2html() function call, or as an Apache handler.
+
+This package is an adaptation of Peter Palfrader's code2html application.
+
+The statement
+
+ use Code2HTML;
+
+exports the function code2html(), which takes the following arguments
+
+ $html = code2html(
+ input => $source_code,
+ infile => 'filename.extension',
+
+ outfile => 'file.html',
+ outputformat => 'html', # or html-dark, or ...
+
+ langmode => 'java', # or perl,html,c,...
+ langfile => 'langFile', # specify alternative
+ # syntax definitions
+
+ linenumbers => 1, # turn on linenumbers
+ linknumbers => 1, # linenumber links
+ line_number_prefix => '-', # linenumber anchors
+ replacetabs => 8, # tabs to spaces
+
+ noheader => '', # don't use template
+ template => 'filename', # override template
+
+ title => $title, # set html page title
+ content_type => 1, # output httpd header
+ );
+
+All input parameters are optional except the source code
+specification, which must be defined by either input or infile keys, or
+by passing exactly one argument which will then be taken to be the
+source code.
+
+ input source code to be converted (or set source -infile)
+
+ infile name of file with code to be converted (or use -input)
+
+ langmode language of source file. If omitted, code2html
+ will try to guess from the language from the file extension
+ or start of the source code. Language modes provided are
+
+ ada, ada95, awk, c, c++, cc, cxx, groff, html,
+ java, javascript, js, m4, make, makefile, pas,
+ pas, pascal, perl, plain, pov, povray, ruby, sql.
+
+ langfile filename of file with alternative syntax definitions
+
+ outfile name of file to put html in. If omitted,
+ just return html in $html=code2html(...)
+
+ outputformat style of output html. Available formats are
+ html (default), html-dark, html-light, html-nobg.
+
+ replacetabs replace tabs in source with given number of spaces
+
+ title set title of output html page
+
+ content_type output a Content-Type httpd header
+
+ linenumbers print line numbers in source code listing
+
+=head1 AUTHOR
+
+Jim Mahoney (mahoney AT marlboro.edu), Peter Palfrader, and others.
+
+=head1 COPYRIGHT and LICENSE
+
+ Copyright (c) 1999, 2000 by Peter Palfrader and others.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+``Software''), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+=head1 SEE ALSO
+
+ Peter Palfrader's Code2HTML page at http://www.palfrader.org/code2html/
+
diff --git a/system/base/less/files/lesspipe.sh b/system/base/less/files/lesspipe.sh
new file mode 100644
index 00000000..e03d6675
--- /dev/null
+++ b/system/base/less/files/lesspipe.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+#
+# To use this filter with less, define LESSOPEN:
+# export LESSOPEN="|/usr/bin/lesspipe.sh %s"
+#
+# The script should return zero if the output was valid and non-zero
+# otherwise, so less could detect even a valid empty output
+# (for example while uncompressing gzipped empty file).
+# For backward-compatibility, this is not required by default. To turn
+# this functionality there should be another vertical bar (|) straight
+# after the first one in the LESSOPEN environment variable:
+# export LESSOPEN="||/usr/bin/lesspipe.sh %s"
+
+if [ ! -e "$1" ] ; then
+ exit 1
+fi
+
+if [ -d "$1" ] ; then
+ ls -alF -- "$1"
+ exit $?
+fi
+
+exec 2>/dev/null
+
+case "$1" in
+*.[1-9n].bz2|*.[1-9]x.bz2|*.man.bz2|*.[1-9n].[gx]z|*.[1-9]x.[gx]z|*.man.[gx]z|*.[1-9n].lzma|*.[1-9]x.lzma|*.man.lzma)
+ case "$1" in
+ *.gz) DECOMPRESSOR="gzip -dc" ;;
+ *.bz2) DECOMPRESSOR="bzip2 -dc" ;;
+ *.xz|*.lzma) DECOMPRESSOR="xz -dc" ;;
+ esac
+ if [ -n "$DECOMPRESSOR" ] && $DECOMPRESSOR -- "$1" | file - | grep -q troff; then
+ $DECOMPRESSOR -- "$1" | groff -Tascii -mandoc -
+ exit $?
+ fi ;;&
+*.[1-9n]|*.[1-9]x|*.man)
+ if file "$1" | grep -q troff; then
+ man -l "$1" | cat -s
+ exit $?
+ fi ;;&
+*.tar) tar tvvf "$1" ;;
+*.tgz|*.tar.gz|*.tar.[zZ]) tar tzvvf "$1" ;;
+*.tar.xz) tar Jtvvf "$1" ;;
+*.xz|*.lzma) xz -dc -- "$1" ;;
+*.tar.bz2|*.tbz2) bzip2 -dc -- "$1" | tar tvvf - ;;
+*.[zZ]|*.gz) gzip -dc -- "$1" ;;
+*.bz2) bzip2 -dc -- "$1" ;;
+*.zip|*.jar|*.nbm) zipinfo -- "$1" ;;
+*.rpm) rpm -qpivl --changelog -- "$1" ;;
+*.cpi|*.cpio) cpio -itv < "$1" ;;
+*.gif|*.jpeg|*.jpg|*.pcd|*.png|*.tga|*.tiff|*.tif)
+ if [ -x /usr/bin/identify ]; then
+ identify "$1"
+ elif [ -x /usr/bin/gm ]; then
+ gm identify "$1"
+ else
+ echo "No identify available"
+ echo "Install ImageMagick or GraphicsMagick to browse images"
+ exit 1
+ fi ;;
+*)
+ if [ -x /usr/bin/file ] && [ -x /usr/bin/iconv ] && [ -x /usr/bin/cut ]; then
+ case `file -b "$1"` in
+ *UTF-16*) conv='UTF-16' ;;
+ *UTF-32*) conv='UTF-32' ;;
+ esac
+ if [ -n "$conv" ]; then
+ env=`echo $LANG | cut -d. -f2`
+ if [ -n "$env" -a "$conv" != "$env" ]; then
+ iconv -f $conv -t $env "$1"
+ exit $?
+ fi
+ fi
+ fi
+ exit 1
+esac
+exit $?
+
diff --git a/system/base/less/pspec.xml b/system/base/less/pspec.xml
new file mode 100644
index 00000000..990f5a8c
--- /dev/null
+++ b/system/base/less/pspec.xml
@@ -0,0 +1,63 @@
+
+
+
+
+ less
+ http://www.greenwoodsoftware.com/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv3
+ app:console
+ Excellent text file viewer
+ The less utility is a text file browser that resembles more, but has more capabilities. Less allows you to move backwards in the file as well as forwards. Since less doesn't have to read the entire input file before it starts, less starts up more quickly than text editors (for example, vi).
+ http://www.greenwoodsoftware.com/less/less-458.tar.gz
+
+ ncurses-devel
+
+
+
+
+ less
+
+ ncurses
+
+
+ /etc/env.d
+ /usr/bin
+ /usr/share/doc
+ /usr/share/man
+
+
+ lesspipe.sh
+ 70less
+
+ code2color
+
+
+
+
+
+ 2014-05-11
+ 458
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-24
+ 458
+ Version bump.
+ Ertuğrul Erata
+ ertugrulerata@gmail.com
+
+
+ 2012-09-15
+ 451
+ First release
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+
diff --git a/system/base/less/translations.xml b/system/base/less/translations.xml
new file mode 100644
index 00000000..3598dcf0
--- /dev/null
+++ b/system/base/less/translations.xml
@@ -0,0 +1,9 @@
+
+
+
+ less
+ Mükemmel bir metin görüntüleyici
+ Excellent lecteur de fichier texte
+ Ausgezeichneter Textbetrachter
+
+
diff --git a/system/base/leveldb/actions.py b/system/base/leveldb/actions.py
new file mode 100644
index 00000000..7570a875
--- /dev/null
+++ b/system/base/leveldb/actions.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+
+def build():
+ shelltools.chmod("build_detect_platform", 0755)
+ autotools.make()
+
+def check():
+ autotools.make("check")
+
+def install():
+ pisitools.dolib_so("libleveldb.so.1.17")
+ pisitools.dosym("libleveldb.so.1.17", "/usr/lib/libleveldb.so.1")
+ pisitools.dosym("libleveldb.so.1.17", "/usr/lib/libleveldb.so")
+
+ pisitools.insinto("/usr/include", "include/*")
+ pisitools.insinto("/usr/include", "helpers/memenv/memenv.h")
+
+ pisitools.dodoc("README", "LICENSE", "NEWS", "AUTHORS")
\ No newline at end of file
diff --git a/system/base/leveldb/pspec.xml b/system/base/leveldb/pspec.xml
new file mode 100644
index 00000000..60a7bed8
--- /dev/null
+++ b/system/base/leveldb/pspec.xml
@@ -0,0 +1,53 @@
+
+
+
+
+ leveldb
+ https://code.google.com/p/leveldb
+
+ Alihan Öztürk
+ alihan@pisilinux.org
+
+ BSD
+ app:console
+ A fast and lightweight key/value database library
+ LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
+
+ gperftools-devel
+ snappy-devel
+
+ http://source.pisilinux.org/1.0/leveldb-e353fbc7ea81.tar.gz
+
+
+
+ leveldb
+
+ libgcc
+ snappy
+ gperftools
+
+
+ /usr/lib
+ /usr/share/doc
+
+
+
+ leveldb-devel
+
+ leveldb
+
+
+ /usr/include
+
+
+
+
+
+ 2014-06-02
+ 1.17
+ First release
+ Alihan Öztürk
+ alihan@pisilinux.org
+
+
+
diff --git a/system/base/leveldb/translations.xml b/system/base/leveldb/translations.xml
new file mode 100644
index 00000000..cf8bb93f
--- /dev/null
+++ b/system/base/leveldb/translations.xml
@@ -0,0 +1,7 @@
+
+
+ leveldb
+ Hızlı ve hafif bir anahtar/değer veri kütüphanesi
+ LevelDB dize değerleri ile dize anahtarlarını eşleme sağlayan, Google'da yazılmış hızlı bir anahtar-değer depolama kütüphanesidir.
+
+
diff --git a/system/base/libX11/actions.py b/system/base/libX11/actions.py
new file mode 100644
index 00000000..4d41b1e2
--- /dev/null
+++ b/system/base/libX11/actions.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+
+def setup():
+ autotools.autoreconf("-vif")
+ autotools.configure("--disable-static")
+
+ pisitools.dosed("libtool", "^(hardcode_libdir_flag_spec=).*", '\\1""')
+ pisitools.dosed("libtool", "^(runpath_var=)LD_RUN_PATH", "\\1DIE_RPATH_DIE")
+ pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ")
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+ if get.buildTYPE() == "emul32": return
+
+ pisitools.dodoc("AUTHORS", "COPYING", "NEWS", "README")
diff --git a/system/base/libX11/files/fix-null-pointer.patch b/system/base/libX11/files/fix-null-pointer.patch
new file mode 100644
index 00000000..8b37f365
--- /dev/null
+++ b/system/base/libX11/files/fix-null-pointer.patch
@@ -0,0 +1,12 @@
+diff -Naur libX11-1.3.5//src/xlibi18n/ICWrap.c libX11-1.3.5.tpg//src/xlibi18n/ICWrap.c
+--- libX11-1.3.5//src/xlibi18n/ICWrap.c 2010-08-10 04:59:44.000000000 +0000
++++ libX11-1.3.5.tpg//src/xlibi18n/ICWrap.c 2010-09-17 17:11:21.000000000 +0000
+@@ -283,7 +283,7 @@
+ XIMArg *args;
+ char *ret;
+
+- if (!ic->core.im)
++ if (!ic || !ic->core.im)
+ return (char *) NULL;
+
+ /*
diff --git a/system/base/libX11/files/fix-segfault.diff b/system/base/libX11/files/fix-segfault.diff
new file mode 100644
index 00000000..a38c0ce2
--- /dev/null
+++ b/system/base/libX11/files/fix-segfault.diff
@@ -0,0 +1,50 @@
+Index: libX11-1.4.99.1/src/Xrm.c
+===================================================================
+--- libX11-1.4.99.1.orig/src/Xrm.c
++++ libX11-1.4.99.1/src/Xrm.c
+@@ -2540,30 +2540,40 @@ Bool XrmQGetResource(
+ VClosureRec closure;
+
+ if (db && *names) {
+- _XLockMutex(&db->linfo);
++ if ((_XLockMutex_fn) && db->linfo.lock ) {
++ _XLockMutex(&db->linfo);
++ }
+ closure.type = pType;
+ closure.value = pValue;
+ table = db->table;
+ if (names[1]) {
+ if (table && !table->leaf) {
+ if (GetNEntry(table, names, classes, &closure)) {
+- _XUnlockMutex(&db->linfo);
++ if ((_XUnlockMutex_fn) && db->linfo.lock ) {
++ _XUnlockMutex(&db->linfo);
++ }
+ return True;
+ }
+ } else if (table && table->hasloose &&
+ GetLooseVEntry((LTable)table, names, classes, &closure)) {
+- _XUnlockMutex (&db->linfo);
++ if ((_XUnlockMutex_fn) && db->linfo.lock ) {
++ _XUnlockMutex (&db->linfo);
++ }
+ return True;
+ }
+ } else {
+ if (table && !table->leaf)
+ table = table->next;
+ if (table && GetVEntry((LTable)table, names, classes, &closure)) {
+- _XUnlockMutex(&db->linfo);
++ if ((_XUnlockMutex_fn) && db->linfo.lock ) {
++ _XUnlockMutex(&db->linfo);
++ }
+ return True;
+ }
+ }
+- _XUnlockMutex(&db->linfo);
++ if ((_XUnlockMutex_fn) && db->linfo.lock ) {
++ _XUnlockMutex(&db->linfo);
++ }
+ }
+ *pType = NULLQUARK;
+ pValue->addr = (XPointer)NULL;
diff --git a/system/base/libX11/pspec.xml b/system/base/libX11/pspec.xml
new file mode 100644
index 00000000..82f3791f
--- /dev/null
+++ b/system/base/libX11/pspec.xml
@@ -0,0 +1,118 @@
+
+
+
+
+ libX11
+ http://www.x.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ MIT
+ library
+ X.Org X11 library
+ Core X11 protocol client library.
+ mirrors://xorg/individual/lib/libX11-1.6.2.tar.bz2
+
+ libxcb-devel
+ xorg-proto
+ xtrans
+
+
+ fix-segfault.diff
+ fix-null-pointer.patch
+
+
+
+
+ libX11
+
+ libxcb
+
+
+ /usr/lib/libX11*
+ /usr/lib/X11
+ /usr/share/X11
+ /usr/share/doc/libX11
+
+
+
+
+ libX11-devel
+ system.devel
+ Development files for X11 library
+
+ libX11
+ libxcb-devel
+ xorg-proto
+
+
+ /usr/include/X11
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+ /usr/share/man
+
+
+
+
+ libX11-32bit
+ emul32
+ 32-bit shared libraries for libX11
+ emul32
+
+ libxcb-32bit
+
+
+ libX11
+ libxcb-32bit
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-05-11
+ 1.6.2
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-07
+ 1.6.2
+ Rebuild.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-09-12
+ 1.6.2
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-07-30
+ 1.6.1
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-06-21
+ 1.6.0
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2012-11-24
+ 1.5.0
+ First release
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+
diff --git a/system/base/libX11/translations.xml b/system/base/libX11/translations.xml
new file mode 100644
index 00000000..f7b669ff
--- /dev/null
+++ b/system/base/libX11/translations.xml
@@ -0,0 +1,19 @@
+
+
+
+ libX11
+ X.Org X11 kitaplığı
+ Librairie X11 de X.Org.
+ X.Org X11 Bibliothek
+
+
+
+ libX11-devel
+ libX11 için geliştirme dosyaları
+
+
+
+ libX11-32bit
+ libX11 için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libXau/actions.py b/system/base/libXau/actions.py
new file mode 100644
index 00000000..1e2e53ca
--- /dev/null
+++ b/system/base/libXau/actions.py
@@ -0,0 +1,20 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import shelltools
+
+def setup():
+ autotools.autoreconf("-vif")
+ autotools.configure("--disable-static")
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
diff --git a/system/base/libXau/files/visibility.patch b/system/base/libXau/files/visibility.patch
new file mode 100644
index 00000000..5a338a16
--- /dev/null
+++ b/system/base/libXau/files/visibility.patch
@@ -0,0 +1,22 @@
+--- libXau-1.0.3/AuDispose.c.orig 2007-11-23 17:51:27.000000000 -0200
++++ libXau-1.0.3/AuDispose.c 2007-11-23 17:51:34.000000000 -0200
+@@ -33,7 +33,7 @@ in this Software without prior written a
+ #include
+ #include
+
+-void
++_X_EXPORT void
+ XauDisposeAuth (Xauth *auth)
+ {
+ if (auth) {
+--- libXau-1.0.3/AuRead.c.orig 2007-11-23 17:52:14.000000000 -0200
++++ libXau-1.0.3/AuRead.c 2007-11-23 17:52:21.000000000 -0200
+@@ -69,7 +69,7 @@ read_counted_string (unsigned short *cou
+ return 1;
+ }
+
+-Xauth *
++_X_EXPORT Xauth *
+ XauReadAuth (FILE *auth_file)
+ {
+ Xauth local;
diff --git a/system/base/libXau/pspec.xml b/system/base/libXau/pspec.xml
new file mode 100644
index 00000000..a13e5ff5
--- /dev/null
+++ b/system/base/libXau/pspec.xml
@@ -0,0 +1,86 @@
+
+
+
+
+ libXau
+ http://www.x.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ MIT
+ library
+ X.Org Au library
+ libXau provides functions to manage X authorization files
+ http://xorg.freedesktop.org/archive/individual/lib/libXau-1.0.8.tar.gz
+
+ visibility.patch
+
+
+
+
+ libXau
+
+ /usr/lib
+
+
+
+
+ libXau-devel
+ system.devel
+ Development files for libXau
+
+ libXau
+
+
+ /usr/include/X11
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+ /usr/share/man
+
+
+
+
+ libXau-32bit
+ emul32
+ 32-bit shared libraries for libXau
+ emul32
+
+ libXau
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-05-11
+ 1.0.8
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-07
+ 1.0.8
+ Rebuild.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-06-21
+ 1.0.8
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2012-08-23
+ 1.0.7
+ First release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libXau/translations.xml b/system/base/libXau/translations.xml
new file mode 100644
index 00000000..a48e4482
--- /dev/null
+++ b/system/base/libXau/translations.xml
@@ -0,0 +1,20 @@
+
+
+
+ libXau
+ X.Org Au kitaplığı.
+ Librairie Au de X.Org.
+ X.Org Au Bibliothek
+ libXau, X yetkilendirme dosyalarını yönetmek için işlevler sağlar.
+
+
+
+ libXau-devel
+ libXau için geliştirme dosyaları
+
+
+
+ libXau-32bit
+ libXau için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libXdmcp/actions.py b/system/base/libXdmcp/actions.py
new file mode 100644
index 00000000..034419ba
--- /dev/null
+++ b/system/base/libXdmcp/actions.py
@@ -0,0 +1,21 @@
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def setup():
+ autotools.autoreconf("-vif")
+ autotools.configure("--disable-static \
+ --without-xmlto")
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "README")
diff --git a/system/base/libXdmcp/pspec.xml b/system/base/libXdmcp/pspec.xml
new file mode 100644
index 00000000..87eca840
--- /dev/null
+++ b/system/base/libXdmcp/pspec.xml
@@ -0,0 +1,77 @@
+
+
+
+
+ libXdmcp
+ http://x.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ MIT
+ library
+ X.Org Xdmcp library
+ LibXdmcp is the X Display Manager Control Protocol library.
+ http://xorg.freedesktop.org/archive/individual/lib/libXdmcp-1.1.1.tar.bz2
+
+
+
+ libXdmcp
+
+ /usr/lib
+ /usr/share/doc
+
+
+
+
+ libXdmcp-devel
+ system.devel
+ Development files for libXdmcp
+
+ libXdmcp
+
+
+ /usr/include/X11
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+ /usr/share/doc/*/*.xml
+
+
+
+
+ libXdmcp-32bit
+ emul32
+ 32-bit shared libraries for libXdmcp
+ emul32
+
+ libXdmcp
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-05-11
+ 1.1.1
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-08
+ 1.1.1
+ Rebuild, clean actions.py.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2012-08-23
+ 1.1.1
+ First release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libXdmcp/translations.xml b/system/base/libXdmcp/translations.xml
new file mode 100644
index 00000000..7eb6f757
--- /dev/null
+++ b/system/base/libXdmcp/translations.xml
@@ -0,0 +1,20 @@
+
+
+
+ libXdmcp
+ X.Org Xdmcp kitaplığı.
+ Librairie Xdmcp de X.Org.
+ X.Org Xdmcp Bibliothek
+ LibXdmcp, X Ekran Yöneticisi Denetim Protokolü kitaplığıdır.
+
+
+
+ libXdmcp-devel
+ libXdmcp için geliştirme dosyaları
+
+
+
+ libXdmcp-32bit
+ libXdmcp için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libcap-ng/actions.py b/system/base/libcap-ng/actions.py
new file mode 100644
index 00000000..eb7dbf87
--- /dev/null
+++ b/system/base/libcap-ng/actions.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import shelltools
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def setup():
+ #shelltools.unlink("py-compile")
+ #shelltools.sym("/bin/true", "%s/py-compile" % get.curDIR())
+
+ autotools.autoreconf("-fi")
+ autotools.configure("--disable-static")
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ pisitools.dodoc("ChangeLog", "COPYING*", "README", "NEWS")
diff --git a/system/base/libcap-ng/pspec.xml b/system/base/libcap-ng/pspec.xml
new file mode 100644
index 00000000..2e1bf6bd
--- /dev/null
+++ b/system/base/libcap-ng/pspec.xml
@@ -0,0 +1,108 @@
+
+
+
+
+ libcap-ng
+ http://people.redhat.com/sgrubb/libcap-ng
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ LGPLv2+
+ library
+ An alternate POSIX capabilities library
+ libcap-ng is a library that makes using POSIX capabilities easier.
+ http://people.redhat.com/sgrubb/libcap-ng/libcap-ng-0.7.3.tar.gz
+
+
+ attr
+ python
+
+
+
+
+
+
+
+
+
+
+ libcap-ng
+
+ /usr/lib
+ /usr/share/doc
+
+
+
+
+ python-libcap-ng
+ programming.language.python
+ Python bindings for libcap-ng
+
+ libcap-ng
+
+
+ /usr/lib/python*
+
+
+
+
+ libcap-ng-utils
+ util.admin
+ Utilities to analyse the POSIX capabilities on running processes
+
+ libcap-ng
+
+
+ /usr/bin
+ /usr/share/man/man8/*
+
+
+
+
+ libcap-ng-devel
+ system.devel
+ Development files for libcap-ng
+
+ libcap-ng
+
+
+ /usr/share/aclocal
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/share/man/man3
+
+
+
+
+
+ 2014-05-11
+ 0.7.3
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-29
+ 0.7.3
+ Rebuild
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2013-02-11
+ 0.7.3
+ Güncellendi.
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+ 2012-08-23
+ 0.7
+ First release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libcap-ng/translations.xml b/system/base/libcap-ng/translations.xml
new file mode 100644
index 00000000..34a33c4f
--- /dev/null
+++ b/system/base/libcap-ng/translations.xml
@@ -0,0 +1,23 @@
+
+
+
+ libcap-ng
+ Alternatif bir POSIX yetenekleri kütüphanesi
+ libcap-ng POSIX yeteneklerinin yönetimini kolaylaştıran bir kütüphanedir.
+
+
+
+ python-libcap-ng
+ Python için libcap-ng bağlayıcıları
+
+
+
+ libcap-ng-utils
+ Çalışan süreçlerin sahip olduğu POSIX yeteneklerini incelemeye yarayan araçlar
+
+
+
+ libcap-ng-devel
+ libcap-ng için geliştirme dosyaları
+
+
diff --git a/system/base/libcap/actions.py b/system/base/libcap/actions.py
new file mode 100644
index 00000000..f5e4fdfd
--- /dev/null
+++ b/system/base/libcap/actions.py
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+
+pisitools.cflags.add("-D_LARGEFILE64_SOURCE", "-D_FILE_OFFSET_BITS=64")
+
+def setup():
+ # fix linkage
+ pisitools.dosed("pam_cap/Makefile", "(.*<\s\$\(LDLIBS\))", r"\1 -lpam")
+ # no static libs
+ pisitools.dosed("libcap/Makefile", "install.*STALIBNAME", deleteLine=True)
+ # change shared libs mode
+ pisitools.dosed("libcap/Makefile", "(.*?install -m) 0644 (.*?MINLIBNAME.*)", r"\1 0755 \2")
+ # use pisilinux flags
+ pisitools.dosed("Make.Rules", "^(CC|CFLAGS|LD)\s:=.*", deleteLine=True)
+
+ pisitools.dosed("Make.Rules", "^(PAM_CAP\s:=).*", r"\1 %s" % ("no" if get.buildTYPE() == "emul32" else "yes"))
+
+def build():
+ autotools.make("lib_prefix=/usr lib=lib%s" % ("32" if get.buildTYPE() == "emul32" else ""))
+
+def install():
+ if get.buildTYPE() == "emul32":
+ autotools.rawInstall("prefix=/emul32 lib=../usr/lib32 DESTDIR=%s RAISE_SETFCAP=no" % get.installDIR())
+ return
+
+ autotools.rawInstall("prefix=/usr DESTDIR=%s SBINDIR=%s/sbin RAISE_SETFCAP=no" % ((get.installDIR(),)*2))
+
+ pisitools.insinto("/etc/security", "pam_cap/capability.conf")
+
+ pisitools.dodoc("CHANGELOG", "License", "README", "doc/capability.notes")
diff --git a/system/base/libcap/pspec.xml b/system/base/libcap/pspec.xml
new file mode 100644
index 00000000..43a0f57d
--- /dev/null
+++ b/system/base/libcap/pspec.xml
@@ -0,0 +1,106 @@
+
+
+
+
+ libcap
+ http://www.kernel.org/pub/linux/libs/security/linux-privs/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv2
+ BSD
+ library
+ POSIX 1003.1e capabilities library
+ libcap is a library for getting and setting POSIX.1e (formerly POSIX 6) draft 15 capabilities.
+ https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/libcap-2.24.tar.xz
+
+ attr-devel
+ pam
+
+
+
+
+ libcap
+
+ pam
+ attr
+
+
+ /sbin
+ /lib
+ /usr/lib
+ /usr/share/man
+ /usr/share/doc
+ /etc
+
+
+
+
+ libcap-devel
+ system.devel
+ Development files for libcap
+
+ libcap
+
+
+ /usr/include
+ /usr/share/man/man3
+
+
+
+
+ libcap-32bit
+ emul32
+ 32-bit shared libraries for libcap
+ emul32
+
+ attr-32bit
+
+
+ libcap
+ attr-32bit
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-05-11
+ 2.24
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-04-03
+ 2.24
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-29
+ 2.22
+ Rebuild
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2013-01-24
+ 2.22
+ Use flags form pisi.conf, fix emul32
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2012-10-01
+ 2.22
+ First release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libcap/translations.xml b/system/base/libcap/translations.xml
new file mode 100644
index 00000000..9e135dd3
--- /dev/null
+++ b/system/base/libcap/translations.xml
@@ -0,0 +1,18 @@
+
+
+
+ libcap
+ POSIX 1003.1e desteği
+ capacités POSIX 1003.1e.
+
+
+
+ libcap-devel
+ libcap için geliştirme dosyaları
+
+
+
+ libcap-32bit
+ libcap için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libee/actions.py b/system/base/libee/actions.py
new file mode 100644
index 00000000..28c5e89a
--- /dev/null
+++ b/system/base/libee/actions.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import get
+from pisi.actionsapi import pisitools
+
+def setup():
+ autotools.configure("--disable-static")
+
+def build():
+ autotools.make("-j1")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README")
diff --git a/system/base/libee/pspec.xml b/system/base/libee/pspec.xml
new file mode 100644
index 00000000..9b04e3da
--- /dev/null
+++ b/system/base/libee/pspec.xml
@@ -0,0 +1,69 @@
+
+
+
+
+ libee
+ http://www.libee.org/
+
+ Marcin Bojara
+ marcin@pisilinux.org
+
+ LGPLv2.1
+ library
+ An Event Expression Library inspired by CEE
+ Libee - An Event Expression Library inspired by CEE
+ http://www.libee.org/download/files/download/libee-0.4.1.tar.gz
+
+ libestr-devel
+
+
+
+
+ libee
+
+ libestr
+
+
+ /usr/sbin
+ /usr/lib/libee.so*
+ /usr/share/doc/libee
+
+
+
+
+ libee-devel
+ system.devel
+ Development files for libestr
+
+ libee
+
+
+ /usr/include/libee
+ /usr/lib/pkgconfig/libee.pc
+
+
+
+
+
+ 2014-05-11
+ 0.4.1
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-28
+ 0.4.1
+ rebuild.
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2012-11-21
+ 0.4.1
+ First release
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+
diff --git a/system/base/libestr/actions.py b/system/base/libestr/actions.py
new file mode 100644
index 00000000..1dc4f162
--- /dev/null
+++ b/system/base/libestr/actions.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import get
+from pisi.actionsapi import pisitools
+
+def setup():
+ autotools.configure("--disable-static")
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README")
diff --git a/system/base/libestr/pspec.xml b/system/base/libestr/pspec.xml
new file mode 100644
index 00000000..8daf3168
--- /dev/null
+++ b/system/base/libestr/pspec.xml
@@ -0,0 +1,62 @@
+
+
+
+
+ libestr
+ http://libestr.adiscon.com
+
+ Marcin Bojara
+ marcin@pisilinux.org
+
+ LGPLv2.1
+ library
+ Library for some string essentials
+ libestr - some essentials for string handling (and a bit more)
+ http://libestr.adiscon.com/files/download/libestr-0.1.9.tar.gz
+
+
+
+ libestr
+
+ /usr/lib/libestr.so*
+ /usr/share/doc/libestr
+
+
+
+
+ libestr-devel
+ system.devel
+ Development files for libestr
+
+ libestr
+
+
+ /usr/include/libestr.h
+ /usr/lib/pkgconfig/libestr.pc
+
+
+
+
+
+ 2014-05-11
+ 0.1.9
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-29
+ 0.1.9
+ Version bump.
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2012-11-21
+ 0.1.4
+ First release
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+
diff --git a/system/base/libffi/actions.py b/system/base/libffi/actions.py
new file mode 100644
index 00000000..1ec65697
--- /dev/null
+++ b/system/base/libffi/actions.py
@@ -0,0 +1,34 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt.
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+
+def setup():
+ autotools.configure("--disable-static")
+
+def build():
+ autotools.make()
+
+def check():
+ # Needs dejagnu package
+ autotools.make("check")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+
+ if get.buildTYPE() == "emul32":
+ # Remove duplicated header files
+ pisitools.removeDir("/usr/lib32/%s" % get.srcDIR())
+ # Fix emul32 includedir
+ pisitools.dosym("/usr/lib/%s/include" % get.srcDIR(),
+ "/usr/lib32/%s/include" % get.srcDIR())
+
+ pisitools.dodoc("ChangeLog*", "LICENSE", "README*")
+
diff --git a/system/base/libffi/pspec.xml b/system/base/libffi/pspec.xml
new file mode 100644
index 00000000..ea67a449
--- /dev/null
+++ b/system/base/libffi/pspec.xml
@@ -0,0 +1,93 @@
+
+
+
+
+ libffi
+ http://sourceware.org/libffi
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ BSD
+ library
+ A portable foreign function interface library
+ The libffi library provides a portable, high level programming interface to various calling conventions.
+ ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz
+
+
+
+ libffi
+
+ /usr/lib/libffi.*
+ /usr/share/doc
+
+
+
+
+ libffi-devel
+ system.devel
+ Development files for libffi
+
+ libffi
+
+
+ /usr/lib/libffi-*
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+ /usr/share/info
+ /usr/share/man
+
+
+
+
+ libffi-32bit
+ emul32
+ 32-bit shared libraries for libffi
+ emul32
+
+ libffi
+
+
+ /usr/lib32/libffi.*
+ /usr/lib32/libffi-*
+
+
+
+
+
+ 2014-12-02
+ 3.2.1
+ Version bump.
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2014-05-11
+ 3.0.13
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-08-31
+ 3.0.13
+ Version bump, clean libffi.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-02-17
+ 3.0.12
+ New Release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+ 2012-07-11
+ 3.0.11
+ First release
+ Erdem Artan
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libffi/translations.xml b/system/base/libffi/translations.xml
new file mode 100644
index 00000000..722b17d6
--- /dev/null
+++ b/system/base/libffi/translations.xml
@@ -0,0 +1,18 @@
+
+
+
+ libffi
+ Yabancı işlev arayüzleri için taşınabilir bir kitaplık
+ libffi kitaplığı, çeşitli işlev çağırma konvansiyonları için taşınabilir ve yüksek düzeyli bir programlama arayüzü sunar.
+
+
+
+ libffi-devel
+ libffi için geliştirme dosyaları
+
+
+
+ libffi-32bit
+ libffi için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libgcrypt/actions.py b/system/base/libgcrypt/actions.py
new file mode 100644
index 00000000..48a66db3
--- /dev/null
+++ b/system/base/libgcrypt/actions.py
@@ -0,0 +1,37 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+from pisi.actionsapi import shelltools
+
+def setup():
+ options = "--disable-static \
+ --enable-noexecstack"
+
+ if get.buildTYPE() == "emul32":
+ shelltools.export("CFLAGS", "%s -m32" % get.CFLAGS())
+
+ # Use 32-bit assembler, another option is to use --disable-asm option
+ pisitools.dosed("mpi/config.links", "path=\"amd64\"", "path=\"i586 i386\"")
+
+ autotools.configure(options)
+
+def build():
+ autotools.make()
+
+def check():
+ autotools.make("check")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ if get.buildTYPE() == "emul32": return
+
+ pisitools.dodir("/etc/gcrypt")
+
+ pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING*", "NEWS", "README", "THANKS", "TODO")
diff --git a/system/base/libgcrypt/pspec.xml b/system/base/libgcrypt/pspec.xml
new file mode 100644
index 00000000..7c74ee80
--- /dev/null
+++ b/system/base/libgcrypt/pspec.xml
@@ -0,0 +1,93 @@
+
+
+
+
+ libgcrypt
+ http://www.gnupg.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ LGPLv2.1
+ library
+ General purpose crypto library
+ Libgcrypt is a general purpose crypto library based on the code used in GNU Privacy Guard.
+ ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-1.6.1.tar.bz2
+
+ libgpg-error-devel
+
+
+
+
+ libgcrypt
+
+ libgpg-error
+
+
+ /usr/lib
+ /usr/share/man
+ /usr/share/doc
+ /etc/gcrypt
+ /usr/bin
+ /usr/share/info
+
+
+
+
+ libgcrypt-devel
+ system.devel
+ Development files for libgcrypt
+
+ libgcrypt
+ libgpg-error-devel
+
+
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/share/aclocal
+ /usr/lib32/pkgconfig
+ /usr/bin/*-config
+
+
+
+
+ libgcrypt-32bit
+ emul32
+ 32-bit shared libraries for libgcrypt
+ emul32
+
+ libgpg-error-32bit
+
+
+ libgpg-error-32bit
+ libgcrypt
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-05-11
+ 1.6.1
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-04-03
+ 1.6.1
+ Version bump.
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+ 2011-05-03
+ 1.5.0
+ First release
+ Pisi Linux Admins
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libgcrypt/translations.xml b/system/base/libgcrypt/translations.xml
new file mode 100644
index 00000000..f11ec260
--- /dev/null
+++ b/system/base/libgcrypt/translations.xml
@@ -0,0 +1,19 @@
+
+
+
+ libgcrypt
+ Genel amaçlı bir şifreleme kitaplığı
+ Librairie générale de cryptographie basée sur le code utilisé dans GnuPG.
+ Libgcrypt, GNU Privacy Guard kodunu temel alan genel amaçlı bir şifreleme kitaplığıdır.
+
+
+
+ libgcrypt-devel
+ libgcrypt için geliştirme dosyaları
+
+
+
+ libgcrypt-32bit
+ libgcrypt için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libgpg-error/actions.py b/system/base/libgpg-error/actions.py
new file mode 100644
index 00000000..e07b1f58
--- /dev/null
+++ b/system/base/libgpg-error/actions.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def setup():
+ autotools.configure("--enable-nls \
+ --disable-rpath \
+ --disable-languages")
+
+def build():
+ autotools.make()
+
+def check():
+ autotools.make("check")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ if get.buildTYPE() == "emul32": return
+
+ pisitools.dodoc("AUTHORS", "COPYING*", "ChangeLog", "NEWS", "README", "THANKS")
diff --git a/system/base/libgpg-error/pspec.xml b/system/base/libgpg-error/pspec.xml
new file mode 100644
index 00000000..ef455176
--- /dev/null
+++ b/system/base/libgpg-error/pspec.xml
@@ -0,0 +1,81 @@
+
+
+
+
+ libgpg-error
+ http://www.gnupg.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv2
+ LGPLv2.1
+ library
+ Library for error values used by GnuPG components
+ libgpg-error is a library that defines common error values for all GnuPG components.
+ ftp://ftp.gnupg.org/gcrypt/libgpg-error/libgpg-error-1.12.tar.bz2
+
+
+
+ libgpg-error
+
+ /usr/bin
+ /usr/lib
+ /usr/share/doc
+ /usr/share/locale
+
+
+
+
+ libgpg-error-devel
+ system.devel
+ Development files for libgpg-error
+
+ libgpg-error
+
+
+ /usr/bin/*-config
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+ /usr/share/aclocal
+
+
+
+
+ libgpg-error-32bit
+ emul32
+ 32-bit shared libraries for libgpg-error
+ emul32
+
+ libgpg-error
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-05-11
+ 1.12
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-26
+ 1.12
+ Version bump.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2012-09-15
+ 1.10
+ First release
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+
diff --git a/system/base/libgpg-error/translations.xml b/system/base/libgpg-error/translations.xml
new file mode 100644
index 00000000..3ca2544d
--- /dev/null
+++ b/system/base/libgpg-error/translations.xml
@@ -0,0 +1,19 @@
+
+
+
+ libgpg-error
+ GnuPG bileşenlerinin kullandığı hata değerleri için kitaplık
+ Contient les fonctions de gestion d'erreur utilisées par le logiciel GnuPG.
+ libgpg-error, tüm GnuPG bileşenleri için ortak olan hata değerlerini tanımlayan bir kitaplıktır.
+
+
+
+ libgpg-error-devel
+ libgpg-error için geliştirme dosyaları
+
+
+
+ libgpg-error-32bit
+ libgpg-error için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libidn/actions.py b/system/base/libidn/actions.py
new file mode 100644
index 00000000..ba5cf7a9
--- /dev/null
+++ b/system/base/libidn/actions.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import shelltools
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def setup():
+ options = "--enable-nls \
+ --disable-java \
+ --disable-csharp \
+ --disable-rpath \
+ --disable-gtk-doc \
+ --disable-static"
+
+ if get.buildTYPE() == "emul32":
+ options += " --bindir=/emul32/bin"
+
+ shelltools.export("CFLAGS", "%s -m32" % get.CFLAGS())
+
+ autotools.configure(options)
+
+def build():
+ autotools.make()
+
+def check():
+ autotools.make("-C tests check")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ pisitools.dodoc("AUTHORS", "ChangeLog", "FAQ", "NEWS", "README", "THANKS", "TODO")
diff --git a/system/base/libidn/pspec.xml b/system/base/libidn/pspec.xml
new file mode 100644
index 00000000..6a830f5f
--- /dev/null
+++ b/system/base/libidn/pspec.xml
@@ -0,0 +1,91 @@
+
+
+
+
+ libidn
+ http://www.gnu.org/software/libidn
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ LGPLv2.1
+ GPLv3
+ app:console
+ library
+ Internationalized Domain Names (IDN) implementation
+ GNU Libidn is an implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group, used for internationalized domain names. The C library is available under the GNU Lesser General Public License.
+ http://ftp.gnu.org/gnu/libidn/libidn-1.28.tar.gz
+
+
+
+ libidn
+
+ /usr/bin
+ /usr/lib/libidn*
+ /usr/share/emacs
+ /usr/share/locale
+ /usr/share/man/man1
+ /usr/share/info
+ /usr/share/doc
+
+
+
+
+ libidn-devel
+ system.devel
+ Development files for libidn
+
+ libidn
+
+
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+ /usr/share/man/man3
+
+
+
+
+ libidn-32bit
+ emul32
+ 32-bit shared libraries for libidn
+ emul32
+
+ libidn
+
+
+ /usr/lib32/libidn*
+
+
+
+
+
+ 2014-05-11
+ 1.28
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-29
+ 1.28
+ Version bump.
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2013-01-14
+ 1.26
+ New release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+ 2012-08-23
+ 1.25
+ First release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libidn/translations.xml b/system/base/libidn/translations.xml
new file mode 100644
index 00000000..38068327
--- /dev/null
+++ b/system/base/libidn/translations.xml
@@ -0,0 +1,19 @@
+
+
+
+ libidn
+ Uluslararası Alan Adları (IDN) destek kütüphanesi
+ GNU Libidn, IETF Uluslararasılaştırılmış Domain Adları (IDN) çalışma grubu tarafından tanımlanmış Stringgrep, Punycode ve IDNA tariflerinin bir uygulamasıdır, uluslararası domain adlarının kullanımına olanak sağlar. C kütüphanesi GNU Lesser General Public License altında sağlanabilir.
+ GNU Libidn est une implémentation de Stringprep, Punycode et des spécifications IDNA définies par le groupe de travail Internationalized Domain Names (IDN) de l'IETF servant pour les noms de domaines internationalisés. La librairie C est disponible sous la Licence Publique Générale Lesser.
+
+
+
+ libidn-devel
+ libidn için geliştirme dosyaları
+
+
+
+ libidn-32bit
+ libidn için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/liblogging/actions.py b/system/base/liblogging/actions.py
new file mode 100644
index 00000000..24794ff8
--- /dev/null
+++ b/system/base/liblogging/actions.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+
+def setup():
+ autotools.configure("--disable-static \
+ --disable-rfc3195 \
+ --disable-journal")
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README")
diff --git a/system/base/liblogging/pspec.xml b/system/base/liblogging/pspec.xml
new file mode 100644
index 00000000..e530ae1f
--- /dev/null
+++ b/system/base/liblogging/pspec.xml
@@ -0,0 +1,57 @@
+
+
+
+
+ liblogging
+ http://www.liblogging.org
+
+ Marcin Bojara
+ marcin@pisilinux.org
+
+ BSD-2
+ library
+ Easy to use, portable, open source library for system logging
+ Liblogging offers an enhanced replacement for the syslog() call, but retains its ease of use.
+ http://download.rsyslog.com/liblogging/liblogging-1.0.3.tar.gz
+
+
+
+ liblogging
+
+ /usr/lib
+ /usr/bin
+ /usr/share/man
+ /usr/share/doc/liblogging
+
+
+
+
+ liblogging-devel
+ system.devel
+ Development files for liblogging
+
+ liblogging
+
+
+ /usr/include/liblogging/stdlog.h
+ /usr/lib/pkgconfig/liblogging-stdlog.pc
+
+
+
+
+
+ 2014-05-11
+ 1.0.3
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-03-30
+ 1.0.3
+ First release
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+
diff --git a/system/base/libpcre/actions.py b/system/base/libpcre/actions.py
new file mode 100644
index 00000000..fcba9002
--- /dev/null
+++ b/system/base/libpcre/actions.py
@@ -0,0 +1,31 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import libtools
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+
+def setup():
+ autotools.autoreconf("-vif")
+ autotools.configure("--enable-jit \
+ --enable-pcretest-libreadline \
+ --enable-pcre32 \
+ --enable-pcre16 \
+ --enable-utf \
+ --enable-unicode-properties \
+ --enable-cpp \
+ --docdir=/%s/%s \
+ --disable-static" % (get.docDIR(), get.srcNAME()))
+
+def build():
+ autotools.make()
+
+def check():
+ autotools.make("-j1 check")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
diff --git a/system/base/libpcre/pspec.xml b/system/base/libpcre/pspec.xml
new file mode 100644
index 00000000..1795b1ca
--- /dev/null
+++ b/system/base/libpcre/pspec.xml
@@ -0,0 +1,130 @@
+
+
+
+
+ libpcre
+ http://www.pcre.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ BSD
+ library
+ Perl-compatible regular expression library
+ The PCRE (Perl Compatible Regular Expressions) library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5.
+ http://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.bz2
+
+ readline-devel
+
+
+
+
+ libpcre
+
+ libgcc
+ readline
+
+
+ /usr/lib
+ /usr/share/man
+ /usr/share/doc
+ /usr/bin
+
+
+
+
+ libpcre-devel
+ system.devel
+ Development files for libpcre
+
+ libpcre
+
+
+ /usr/include
+ /usr/share/man/man3
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+ /usr/share/doc/libpcre/html
+ /usr/bin/pcre-config
+ /usr/share/man/man1/pcre-config.1*
+ /usr/share/doc/libpcre/pcre-config.txt
+
+
+
+
+ libpcre-32bit
+ emul32
+ 32-bit shared libraries for libpcre
+ emul32
+
+ readline-32bit
+
+
+ libgcc
+ readline
+ libpcre
+
+
+ /usr/lib32
+
+
+
+
+
+ 2015-01-25
+ 8.36
+ Version bump.
+ Vedat Demir
+ vedat@pisilinux.org
+
+
+ 2014-05-11
+ 8.34
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-04-03
+ 8.34
+ Version bump.
+ Osman Erkan
+ osman.erkan@pisilinux.org
+
+
+ 2013-09-01
+ 8.33
+ Version bump, clean pcre.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-07-28
+ 8.32
+ Fix deps.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-05-20
+ 8.32
+ adress fixed
+ Osman Erkan
+ osman.erkan@pisilinux.org
+
+
+ 2013-02-16
+ 8.32
+ Update
+ Osman Erkan
+ osman.erkan@pisilinux.org
+
+
+ 2011-03-11
+ 8.31
+ First release
+ Erdem Artan
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libpcre/translations.xml b/system/base/libpcre/translations.xml
new file mode 100644
index 00000000..e77df3d2
--- /dev/null
+++ b/system/base/libpcre/translations.xml
@@ -0,0 +1,19 @@
+
+
+
+ libpcre
+ Perl-uyumlu sıradan ifade kütüphanesi
+ PCRE kütüphanesi, Perl 5 programlama dili sözdizimi ve semantiği ile kalıp eşleştirme (pattern matching) görevini yürüten fonksiyonları barındırır.
+ La librairie PCRE (Expressions Régulières Compatible avec Perl) est un ensemble de fonctions implémentant la recherche de motifs de texte à l'aide d'expressions régulières utilisant la même syntaxe et la même sémantique que Perl5.
+
+
+
+ libpcre-devel
+ libpcre için geliştirme dosyaları
+
+
+
+ libpcre-32bit
+ libpcre için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libpipeline/actions.py b/system/base/libpipeline/actions.py
new file mode 100644
index 00000000..7cf8c030
--- /dev/null
+++ b/system/base/libpipeline/actions.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+
+def setup():
+ autotools.configure("--disable-static \
+ --disable-rpath")
+
+def build():
+ autotools.make()
+
+def check():
+ autotools.make("check")
+
+def install():
+ autotools.install()
+
+ pisitools.dodoc("COPYING", "NEWS", "README")
diff --git a/system/base/libpipeline/pspec.xml b/system/base/libpipeline/pspec.xml
new file mode 100644
index 00000000..5fefae64
--- /dev/null
+++ b/system/base/libpipeline/pspec.xml
@@ -0,0 +1,77 @@
+
+
+
+
+ libpipeline
+ http://libpipeline.nongnu.org
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv3+
+ library
+ pipeline manipulation library
+ libpipeline is a C library for manipulating pipelines of subprocesses in a flexible and convenient way.
+ http://download.savannah.gnu.org/releases/libpipeline/libpipeline-1.3.0.tar.gz
+
+
+
+ libpipeline
+
+ /usr/lib
+ /usr/share/doc
+
+
+
+
+ libpipeline-devel
+ system.devel
+ Development files for libpipeline
+
+ libpipeline
+
+
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/share/man
+
+
+
+
+
+ 2014-05-11
+ 1.3.0
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-03-29
+ 1.3.0
+ Version bump
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-10-24
+ 1.2.4
+ Version bump.
+ Ertuğrul Erata
+ ertugrulerata@gmail.com
+
+
+ 2013-01-14
+ 1.2.2
+ New release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+ 2011-12-16
+ 1.2.0
+ First release
+ Pisi Linux Admins
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libpipeline/translations.xml b/system/base/libpipeline/translations.xml
new file mode 100644
index 00000000..e9f60231
--- /dev/null
+++ b/system/base/libpipeline/translations.xml
@@ -0,0 +1,13 @@
+
+
+
+ libpipeline
+ pipeline yönetim kitaplığı
+ libpipeline, alt-süreç girdi/çıktı hatlarını (pipeline) yönetmek için geliştirilmiş bir C kitaplığıdır.
+
+
+
+ libpipeline-devel
+ libpipeline için geliştirme dosyaları
+
+
diff --git a/system/base/libpng/actions.py b/system/base/libpng/actions.py
new file mode 100644
index 00000000..841f2da5
--- /dev/null
+++ b/system/base/libpng/actions.py
@@ -0,0 +1,35 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+from pisi.actionsapi import shelltools
+
+def setup():
+ options = "--disable-static"
+
+ if get.buildTYPE() == "emul32":
+ options += " --libdir=/usr/lib32"
+ shelltools.export("CFLAGS", "%s -m32" % get.CFLAGS())
+ pisitools.dosed("Makefile.in","check: scripts/symbols.chk","check:")
+ autotools.configure(options)
+
+def build():
+ autotools.make()
+
+def check():
+ autotools.make("check")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ if get.buildTYPE() == "emul32":
+ return
+
+ # remove la symlink, it is not detected correctly
+ pisitools.remove("/usr/lib/libpng.la")
+ pisitools.dodoc("ANNOUNCE", "CHANGES", "README", "TODO")
diff --git a/system/base/libpng/files/libpng-1.6.10-apng.patch.gz b/system/base/libpng/files/libpng-1.6.10-apng.patch.gz
new file mode 100644
index 00000000..1cacbbe1
Binary files /dev/null and b/system/base/libpng/files/libpng-1.6.10-apng.patch.gz differ
diff --git a/system/base/libpng/files/libpng-1.6.12-apng.patch.gz b/system/base/libpng/files/libpng-1.6.12-apng.patch.gz
new file mode 100644
index 00000000..63ed4d42
Binary files /dev/null and b/system/base/libpng/files/libpng-1.6.12-apng.patch.gz differ
diff --git a/system/base/libpng/files/libpng-1.6.15-apng.patch.gz b/system/base/libpng/files/libpng-1.6.15-apng.patch.gz
new file mode 100644
index 00000000..863f2dee
Binary files /dev/null and b/system/base/libpng/files/libpng-1.6.15-apng.patch.gz differ
diff --git a/system/base/libpng/files/libpng-multilib.patch b/system/base/libpng/files/libpng-multilib.patch
new file mode 100644
index 00000000..aa752b25
--- /dev/null
+++ b/system/base/libpng/files/libpng-multilib.patch
@@ -0,0 +1,23 @@
+Use pkg-config to report libpng version and installation directories.
+
+
+diff -Naur libpng-1.5.5.orig/libpng-config.in libpng-1.5.5/libpng-config.in
+--- libpng-1.5.5.orig/libpng-config.in 2011-09-22 09:40:23.000000000 -0400
++++ libpng-1.5.5/libpng-config.in 2011-10-05 01:03:32.335435187 -0400
+@@ -11,11 +11,11 @@
+
+ # Modeled after libxml-config.
+
+-version="@PNGLIB_VERSION@"
+-prefix="@prefix@"
+-exec_prefix="@exec_prefix@"
+-libdir="@libdir@"
+-includedir="@includedir@/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@"
++version=`pkg-config --modversion libpng`
++prefix=`pkg-config --variable prefix libpng`
++exec_prefix=`pkg-config --variable exec_prefix libpng`
++libdir=`pkg-config --variable libdir libpng`
++includedir=`pkg-config --variable includedir libpng`
+ libs="-lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@"
+ all_libs="-lpng@PNGLIB_MAJOR@@PNGLIB_MINOR@ @LIBS@"
+ I_opts="-I${includedir}"
\ No newline at end of file
diff --git a/system/base/libpng/pspec.xml b/system/base/libpng/pspec.xml
new file mode 100644
index 00000000..64772177
--- /dev/null
+++ b/system/base/libpng/pspec.xml
@@ -0,0 +1,120 @@
+
+
+
+
+ libpng
+ http://www.libpng.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ as-is
+ library
+ Portable Network Graphics library
+ The Portable Network Graphics (PNG) format was designed to replace the older and simpler GIF format and, to some extent, the much more complex TIFF format. Project's main aim is to concentrate on two major uses: the World Wide Web (WWW) and image-editing.
+ mirrors://sourceforge/libpng/libpng-1.6.15.tar.xz
+
+ zlib
+
+
+ libpng-1.6.15-apng.patch.gz
+ libpng-multilib.patch
+
+
+
+
+ libpng
+
+ zlib
+
+
+ /usr/lib
+ /usr/share/doc
+
+
+
+
+ libpng-devel
+ system.devel
+ Development files for libpng
+
+ libpng
+
+
+ /usr/bin
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+ /usr/share/man
+
+
+
+
+ libpng-32bit
+ emul32
+ 32-bit shared libraries for libpng
+ emul32
+
+ zlib-32bit
+
+
+ libpng
+ zlib-32bit
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-12-05
+ 1.6.15
+ Version bump.
+ Osman Erkan
+ osman.erkan@pisilinux.org
+
+
+ 2014-07-07
+ 1.6.12
+ Version bump.
+ Vedat Demir
+ vedat@pisilinux.org
+
+
+ 2014-05-11
+ 1.6.10
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-03-29
+ 1.6.10
+ Version bump
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+ 2013-10-30
+ 1.5.17
+ Version bump.
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2013-01-14
+ 1.5.14
+ New release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+ 2012-11-03
+ 1.5.13
+ First release
+ Erdem Artan
+ admins@pisilinux.org
+
+
+
\ No newline at end of file
diff --git a/system/base/libpng/translations.xml b/system/base/libpng/translations.xml
new file mode 100644
index 00000000..14f11682
--- /dev/null
+++ b/system/base/libpng/translations.xml
@@ -0,0 +1,19 @@
+
+
+
+ libpng
+ PNG kütüphanesi
+ Taşınabilir Ağ Grafikleri (PNG) formatı eski ve daha basit GIF formatının yerine geçmek ve daha karmaşık yapıdaki TIFF formatını biraz daha genişletmek için tasarlanmıştır. Projenin ana hedefi iki önemli parça üzerine konsantre olmaktır: World Wide Web (WWW) ve resim düzenleme.
+ Le format de Graphique Réseau Portable (Portable Network Graphics - PNG) a été conçu pour remplacer le format GIF plus simple et vieillissant ainsi que, d'une certaine manière, le format TIFF beaucoup plus complexe. L'objectif principal du projet est de se concentrer sur deux aspects majeurs : La toile mondiale (World Wide Web - WWW) et l'édition d'image.
+
+
+
+ libpng-devel
+ libpng için geliştirme dosyaları
+
+
+
+ libpng-32bit
+ libpng için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libssh2/actions.py b/system/base/libssh2/actions.py
new file mode 100644
index 00000000..dc197e40
--- /dev/null
+++ b/system/base/libssh2/actions.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def setup():
+ autotools.configure("--disable-static \
+ --enable-shared")
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.install()
+
+ pisitools.dodoc("README", "AUTHORS", "COPYING", "ChangeLog")
diff --git a/system/base/libssh2/pspec.xml b/system/base/libssh2/pspec.xml
new file mode 100644
index 00000000..8d82e51c
--- /dev/null
+++ b/system/base/libssh2/pspec.xml
@@ -0,0 +1,71 @@
+
+
+
+
+ libssh2
+ http://www.libssh2.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ BSD
+ library
+ A library implementing the SSH2 protocol
+ libssh2 is a library implementing the SSH2 protocol as defined by Internet Drafts: SECSH-TRANS, SECSH-USERAUTH, SECSH-CONNECTION, SECSH-ARCH, SECSH-FILEXFER, SECSH-DHGEX, SECSH-NUMBERS, and SECSH-PUBLICKEY.
+ http://www.libssh2.org/download/libssh2-1.4.3.tar.gz
+
+ openssl-devel
+ zlib-devel
+
+
+
+
+ libssh2
+
+ openssl
+ zlib
+
+
+ /usr/lib
+ /usr/share/doc
+
+
+
+
+ libssh2-devel
+ system.devel
+ Development files for libssh2
+
+ libssh2
+
+
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/share/man
+
+
+
+
+
+ 2014-05-11
+ 1.4.3
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-02-15
+ 1.4.3
+ Version bump
+ Ertan Güven
+ ertan@pisilinux.org
+
+
+ 2012-06-12
+ 1.4.2
+ First release
+ Erdem Artan
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libssh2/translations.xml b/system/base/libssh2/translations.xml
new file mode 100644
index 00000000..5b642d49
--- /dev/null
+++ b/system/base/libssh2/translations.xml
@@ -0,0 +1,13 @@
+
+
+
+ libssh2
+ SSH2 protokolü için kütüphane
+ libssh2, SECSH-TRANS, SECSH-USERAUTH, SECSH-CONNECTION, SECSH-ARCH, SECSH-FILEXFER, SECSH-DHGEX, SECSH-NUMBERS ve SECSH-PUBLICKEY gibi Internet Taslakları tarafından belirlenen SSH2 protokolü için geliştirilmiş bir kütüphanedir.
+
+
+
+ libssh2-devel
+ libssh2 için geliştirme dosyaları
+
+
diff --git a/system/base/libunistring/actions.py b/system/base/libunistring/actions.py
new file mode 100644
index 00000000..71213a80
--- /dev/null
+++ b/system/base/libunistring/actions.py
@@ -0,0 +1,22 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+
+def setup():
+ autotools.configure("--disable-static \
+ --disable-rpath")
+
+def build():
+ autotools.make()
+
+def check():
+ autotools.make("check")
+
+def install():
+ autotools.install()
+ pisitools.dodoc("AUTHORS", "BUGS", "ChangeLog", "COPYING", "COPYING.LIB", "HACKING", "NEWS", "README", "THANKS")
diff --git a/system/base/libunistring/pspec.xml b/system/base/libunistring/pspec.xml
new file mode 100644
index 00000000..77237c14
--- /dev/null
+++ b/system/base/libunistring/pspec.xml
@@ -0,0 +1,63 @@
+
+
+
+
+ libunistring
+ http://www.gnu.org/software/libunistring
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv3
+ LGPLv3
+ library
+ Unicode string library
+ This library provides functions for manipulating Unicode strings and for manipulating C strings according to the Unicode standard.
+ mirrors://gnu/libunistring/libunistring-0.9.3.tar.gz
+
+
+
+ libunistring
+
+ /usr/lib
+ /usr/share/doc
+ /usr/share/info
+
+
+
+
+ libunistring-devel
+ system.devel
+ Development files for libunistring
+
+ libunistring
+
+
+ /usr/include
+
+
+
+
+
+ 2014-05-11
+ 0.9.3
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-30
+ 0.9.3
+ Rebuild
+ Pisi Linux Admins
+ admins@pisilinux.org
+
+
+ 2011-02-10
+ 0.9.3
+ First release
+ Pisi Linux Admins
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libunistring/translations.xml b/system/base/libunistring/translations.xml
new file mode 100644
index 00000000..0223e263
--- /dev/null
+++ b/system/base/libunistring/translations.xml
@@ -0,0 +1,13 @@
+
+
+
+ libunistring
+ Unicode karakter dizisi kitaplığı
+ Bu kitaplığı unicode standartına göre unicode ve C karakter dizilerinde değişiklik yapmak için kullanılabilecek fonksiyonlar sunar.
+
+
+
+ libunistring-devel
+ libunistring için geliştirme dosyaları
+
+
diff --git a/system/base/libusb-compat/actions.py b/system/base/libusb-compat/actions.py
new file mode 100644
index 00000000..46b277df
--- /dev/null
+++ b/system/base/libusb-compat/actions.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def setup():
+ autotools.configure("--disable-static \
+ --disable-build-docs")
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ pisitools.dodoc("AUTHORS", "NEWS", "README")
diff --git a/system/base/libusb-compat/pspec.xml b/system/base/libusb-compat/pspec.xml
new file mode 100644
index 00000000..940ba512
--- /dev/null
+++ b/system/base/libusb-compat/pspec.xml
@@ -0,0 +1,99 @@
+
+
+
+
+ libusb-compat
+ http://libusb.sourceforge.net/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ LGPLv2.1
+ library
+ Userspace access to USB devices
+ Project's main aim is to create a library for use by user level applications to access USB devices regardless of OS.
+ mirrors://sourceforge/libusb/libusb-compat-0.1.5.tar.bz2
+
+ libtool
+ libusb-devel
+
+
+
+
+ libusb-compat
+
+ libusb
+
+
+ /usr/lib
+ /usr/share/doc
+
+
+
+
+ libusb-compat-devel
+ system.devel
+ Development files for libusb
+
+ libusb-devel
+ libusb-compat
+
+
+ /usr/bin
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+
+
+
+
+ libusb-compat-32bit
+ emul32
+ 32-bit shared libraries for libXt
+ emul32
+
+ libusb-32bit
+
+
+ libusb-32bit
+ libusb-compat
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-09-08
+ 0.1.5
+
+ Rebuild for libusbx libusb changes
+ Use auto-emul32, cleanup actions.py
+
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-05-11
+ 0.1.5
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-29
+ 0.1.5
+ Version bump.
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2012-07-21
+ 0.1.4
+ First release
+ Erdinç Gültekin
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libusb-compat/translations.xml b/system/base/libusb-compat/translations.xml
new file mode 100644
index 00000000..38ac064c
--- /dev/null
+++ b/system/base/libusb-compat/translations.xml
@@ -0,0 +1,19 @@
+
+
+
+ libusb
+ USB aygıtlarınıza erişiminizi sağlayan kütüphane.
+ Projenin ana hedefi işletim sisteminden bağımsız olarak kullanıcı düzeyinde çalışan uygulamaların USB cihazlara ulaşabilmesi için gerekli kütüphaneleri oluşturmaktır.
+ Ce projet a pour objectif de créer une librairie d'accès aux périphérique USB indépendamment du SE (Système d'exploiation - OS) pour les applications utilisateurs.
+
+
+
+ libusb-devel
+ libusb için geliştirme dosyaları
+
+
+
+ libusb-32bit
+ libusb için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libusb/actions.py b/system/base/libusb/actions.py
new file mode 100644
index 00000000..144f72f0
--- /dev/null
+++ b/system/base/libusb/actions.py
@@ -0,0 +1,22 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def setup():
+ autotools.configure("--disable-static")
+
+def build():
+ autotools.make()
+
+def check():
+ autotools.make("check")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+ pisitools.dodoc("AUTHORS", "NEWS", "README")
diff --git a/system/base/libusb/pspec.xml b/system/base/libusb/pspec.xml
new file mode 100644
index 00000000..74c7f89d
--- /dev/null
+++ b/system/base/libusb/pspec.xml
@@ -0,0 +1,136 @@
+
+
+
+
+ libusb
+ http://libusb.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ LGPLv2.1
+ library
+ Userspace access to USB devices
+ Project's main aim is to create a library for use by user level applications to access USB devices regardless of OS.
+ http://downloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.19/libusb-1.0.19.tar.bz2
+
+ libudev-devel
+
+
+
+
+ libusb
+
+ libusbx
+
+
+ libusbx
+
+
+ libudev
+
+
+ /usr/bin
+ /usr/lib
+ /usr/share/doc
+
+
+
+
+ libusb-devel
+
+ libusbx-devel
+
+
+ libusbx-devel
+
+ system.devel
+ Development files for libusb
+
+ libusb
+
+
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+
+
+
+
+ libusb-32bit
+
+ libusbx-32bit
+
+
+ libusbx-32bit
+
+ emul32
+ 32-bit shared libraries for libusb
+ emul32
+
+ libudev-32bit
+
+
+ libusb
+ libudev-32bit
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-09-08
+ 1.0.19
+
+ rename libusbx to libusb like upsteam
+ version bump to 19
+
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2014-05-16
+ 1.0.18
+ Version bump.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-10-29
+ 1.0.17
+ Version bump.
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2013-07-27
+ 1.0.16
+ Move pc files to devel pack, rebuild
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+ 2013-07-27
+ 1.0.16
+ Move .pc files to devel package
+ Fatih Turgel
+ hitaf@pisilinux.org
+
+
+ 2013-07-23
+ 1.0.16
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2012-10-12
+ 1.0.14
+ First release
+ Erdem Artan
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libusb/translations.xml b/system/base/libusb/translations.xml
new file mode 100644
index 00000000..1162d2b0
--- /dev/null
+++ b/system/base/libusb/translations.xml
@@ -0,0 +1,14 @@
+
+
+
+ libusbx
+ USB aygıtlarınıza erişiminizi sağlayan kütüphane.
+ Projenin ana hedefi işletim sisteminden bağımsız olarak kullanıcı düzeyinde çalışan uygulamaların USB cihazlara ulaşabilmesi için gerekli kütüphaneleri oluşturmaktır.
+ Ce projet a pour objectif de créer une librairie d'accès aux périphérique USB indépendamment du SE (Système d'exploiation - OS) pour les applications utilisateurs.
+
+
+
+ libusbx-devel
+ libusbx için geliştirme dosyaları
+
+
diff --git a/system/base/libxcb/actions.py b/system/base/libxcb/actions.py
new file mode 100644
index 00000000..291ea490
--- /dev/null
+++ b/system/base/libxcb/actions.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def setup():
+ pisitools.flags.add("-DNDEBUG")
+
+ autotools.autoreconf("-vif")
+ autotools.configure("--disable-static \
+ --enable-xevie \
+ --enable-xprint \
+ --enable-xinput \
+ --enable-xkb \
+ --without-doxygen")
+
+ pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ")
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.rawInstall("-j1 DESTDIR=%s" % get.installDIR())
+
+ pisitools.dodoc("COPYING", "NEWS", "README")
diff --git a/system/base/libxcb/files/pthread-stubs.pc b/system/base/libxcb/files/pthread-stubs.pc
new file mode 100644
index 00000000..ad7b91b6
--- /dev/null
+++ b/system/base/libxcb/files/pthread-stubs.pc
@@ -0,0 +1,8 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+
+Name: pthread stubs
+Description: Stubs missing from libc for standard pthread functions
+Version: 0.3
+Libs:
diff --git a/system/base/libxcb/pspec.xml b/system/base/libxcb/pspec.xml
new file mode 100644
index 00000000..de4bda32
--- /dev/null
+++ b/system/base/libxcb/pspec.xml
@@ -0,0 +1,118 @@
+
+
+
+
+ libxcb
+ http://xcb.freedesktop.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ MIT
+ library
+ The X protocol C-language Binding (XCB)
+ The X protocol C-language Binding (XCB) is a replacement for Xlib featuring a small footprint, latency hiding, direct access to the protocol, improved threading support, and extensibility.
+ http://xcb.freedesktop.org/dist/libxcb-1.11.tar.bz2
+
+ libXau-devel
+ libXdmcp-devel
+ libxslt
+ xcb-proto
+
+
+
+
+ libxcb
+
+ libXau
+ libXdmcp
+ glibc
+
+
+ /usr/lib
+ /usr/share/man
+ /usr/share/doc
+
+
+
+
+ libxcb-devel
+ system.devel
+ Development files for libxcb
+
+ libxcb
+
+
+ /usr/include/xcb
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+
+
+ pthread-stubs.pc
+
+
+
+
+ libxcb-32bit
+ emul32
+ 32-bit shared libraries for libxcb
+ emul32
+
+ libXau-32bit
+ libXdmcp-32bit
+
+
+ libxcb
+ libXau-32bit
+ libXdmcp-32bit
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-09-02
+ 1.11
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-05-11
+ 1.10
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-03-07
+ 1.10
+ Version bump.
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2013-10-08
+ 1.9.1
+ Rebuild.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-07-28
+ 1.9.1
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2012-11-18
+ 1.9
+ First release
+ Erdinç Gültekin
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libxcb/translations.xml b/system/base/libxcb/translations.xml
new file mode 100644
index 00000000..d1bf19d2
--- /dev/null
+++ b/system/base/libxcb/translations.xml
@@ -0,0 +1,17 @@
+
+
+
+ libxcb
+ X protokolü için C dili bağlayıcısı (XCB)
+
+
+
+ libxcb-devel
+ libxcb için geliştirme dosyaları
+
+
+
+ libxcb-32bit
+ libxcb için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/libxml2/actions.py b/system/base/libxml2/actions.py
new file mode 100644
index 00000000..9df0709b
--- /dev/null
+++ b/system/base/libxml2/actions.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+
+def setup():
+ # fix sandbox violations when attempt to read "/missing.xml"
+ pisitools.dosed("testapi.c", "\/missing.xml", "missing.xml")
+
+ options = "--with-zlib \
+ --with-readline \
+ --enable-ipv6 \
+ --disable-static \
+ --with-threads \
+ --with-history \
+ "
+
+ if get.buildTYPE() == "emul32":
+ options += " --bindir=/emul32/bin \
+ --without-python"
+ else: options += " --with-python"
+
+ autotools.configure(options)
+ pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ")
+
+def build():
+ autotools.make()
+
+def check():
+ autotools.make("check")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ if get.buildTYPE() == "emul32":
+ pisitools.removeDir("/usr/share/gtk-doc")
+ return
+
+ pisitools.dodoc("AUTHORS", "ChangeLog", "NEWS", "README", "TODO")
diff --git a/system/base/libxml2/files/CVE-2014-0191.patch b/system/base/libxml2/files/CVE-2014-0191.patch
new file mode 100644
index 00000000..c7b3dba3
--- /dev/null
+++ b/system/base/libxml2/files/CVE-2014-0191.patch
@@ -0,0 +1,95 @@
+From 9cd1c3cfbd32655d60572c0a413e017260c854df Mon Sep 17 00:00:00 2001
+From: Daniel Veillard
+Date: Tue, 22 Apr 2014 15:30:56 +0800
+Subject: Do not fetch external parameter entities
+
+Unless explicitely asked for when validating or replacing entities
+with their value. Problem pointed out by Daniel Berrange
+
+diff --git a/parser.c b/parser.c
+index 9347ac9..c0dea05 100644
+--- a/parser.c
++++ b/parser.c
+@@ -2598,6 +2598,20 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
+ xmlCharEncoding enc;
+
+ /*
++ * Note: external parsed entities will not be loaded, it is
++ * not required for a non-validating parser, unless the
++ * option of validating, or substituting entities were
++ * given. Doing so is far more secure as the parser will
++ * only process data coming from the document entity by
++ * default.
++ */
++ if ((entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) &&
++ ((ctxt->options & XML_PARSE_NOENT) == 0) &&
++ ((ctxt->options & XML_PARSE_DTDVALID) == 0) &&
++ (ctxt->validate == 0))
++ return;
++
++ /*
+ * handle the extra spaces added before and after
+ * c.f. http://www.w3.org/TR/REC-xml#as-PE
+ * this is done independently.
+--
+cgit v0.10.1
+
+From dd8367da17c2948981a51e52c8a6beb445edf825 Mon Sep 17 00:00:00 2001
+From: Daniel Veillard
+Date: Wed, 11 Jun 2014 16:54:32 +0800
+Subject: Fix regressions introduced by CVE-2014-0191 patch
+
+A number of issues have been raised after the fix, and this patch
+tries to correct all of them, though most were related to
+postvalidation.
+https://bugzilla.gnome.org/show_bug.cgi?id=730290
+and other reports on list, off-list and on Red Hat bugzilla
+
+diff --git a/parser.c b/parser.c
+index c0dea05..ba70f9e 100644
+--- a/parser.c
++++ b/parser.c
+@@ -2598,8 +2598,8 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
+ xmlCharEncoding enc;
+
+ /*
+- * Note: external parsed entities will not be loaded, it is
+- * not required for a non-validating parser, unless the
++ * Note: external parameter entities will not be loaded, it
++ * is not required for a non-validating parser, unless the
+ * option of validating, or substituting entities were
+ * given. Doing so is far more secure as the parser will
+ * only process data coming from the document entity by
+@@ -2608,6 +2608,9 @@ xmlParserHandlePEReference(xmlParserCtxtPtr ctxt) {
+ if ((entity->etype == XML_EXTERNAL_PARAMETER_ENTITY) &&
+ ((ctxt->options & XML_PARSE_NOENT) == 0) &&
+ ((ctxt->options & XML_PARSE_DTDVALID) == 0) &&
++ ((ctxt->options & XML_PARSE_DTDLOAD) == 0) &&
++ ((ctxt->options & XML_PARSE_DTDATTR) == 0) &&
++ (ctxt->replaceEntities == 0) &&
+ (ctxt->validate == 0))
+ return;
+
+@@ -12616,6 +12619,9 @@ xmlIOParseDTD(xmlSAXHandlerPtr sax, xmlParserInputBufferPtr input,
+ return(NULL);
+ }
+
++ /* We are loading a DTD */
++ ctxt->options |= XML_PARSE_DTDLOAD;
++
+ /*
+ * Set-up the SAX context
+ */
+@@ -12743,6 +12749,9 @@ xmlSAXParseDTD(xmlSAXHandlerPtr sax, const xmlChar *ExternalID,
+ return(NULL);
+ }
+
++ /* We are loading a DTD */
++ ctxt->options |= XML_PARSE_DTDLOAD;
++
+ /*
+ * Set-up the SAX context
+ */
+--
+cgit v0.10.1
+
diff --git a/system/base/libxml2/pspec.xml b/system/base/libxml2/pspec.xml
new file mode 100644
index 00000000..92f33d6c
--- /dev/null
+++ b/system/base/libxml2/pspec.xml
@@ -0,0 +1,140 @@
+
+
+
+
+ libxml2
+ http://www.xmlsoft.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ MIT
+ library
+ Version 2 of the library to manipulate XML files
+ Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside of the Gnome platform).
+ ftp://xmlsoft.org/libxml2/libxml2-2.9.1.tar.gz
+
+ python
+ xz-devel
+ zlib-devel
+ readline-devel
+
+
+ CVE-2014-0191.patch
+
+
+
+
+ libxml2-docs
+ system.doc
+
+ libxml2
+
+
+ /usr/share/doc
+
+
+
+
+ libxml2
+
+ xz
+ zlib
+ python
+ readline
+
+
+ /usr/bin
+ /usr/lib
+ /usr/share/man
+
+
+
+
+ libxml2-devel
+ system.devel
+ Development files for libxml2
+
+ libxml2
+
+
+ /usr/lib/pkgconfig
+ /usr/lib32/pkgconfig
+ /usr/include
+ /usr/share/aclocal
+ /usr/share/man/man3
+
+
+
+
+ libxml2-32bit
+ emul32
+ 32-bit shared libraries for libxml2
+ emul32
+
+ xz-32bit
+ zlib-32bit
+ readline-32bit
+
+
+ libxml2
+ xz-32bit
+ zlib-32bit
+
+
+ /usr/lib32
+
+
+
+
+
+ 2014-07-06
+ 2.9.1
+ Security update(CVE-2014-0191).
+ Vedta Demir
+ vedat@pisilinux.org
+
+
+ 2014-05-24
+ 2.9.1
+ Version bump.
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2014-05-11
+ 2.9.0
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-11-11
+ 2.9.0
+ Fix dep,release bump, binary file goes to main package.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-08-31
+ 2.9.1
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-07-26
+ 2.9.0
+ Fix dep,release bump.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2012-10-22
+ 2.9.0
+ First release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/libxml2/translations.xml b/system/base/libxml2/translations.xml
new file mode 100644
index 00000000..58516374
--- /dev/null
+++ b/system/base/libxml2/translations.xml
@@ -0,0 +1,19 @@
+
+
+
+ libxml2
+ XML türü dosyaları işlemeye aracılık eden kütüphanenin 2. sürümü
+ Libxml2, Gnome projesi için geliştirilmiş C dilinde XML ayrıştırıcısıdır. Gnome platformu olmadan da kullanılabilir.
+ Libxml2 est l'analyseur et la boîte à outils XML écrit en C pour le projet Gnome (mais utilisable en dehors de la plateforme Gnome).
+
+
+
+ libxml2-devel
+ libxml2 için geliştirme dosyaları
+
+
+
+ libxml2-32bit
+ libxml2 için 32-bit paylaşımlı kitaplıklar
+
+
diff --git a/system/base/lsb-release/actions.py b/system/base/lsb-release/actions.py
new file mode 100644
index 00000000..64417cac
--- /dev/null
+++ b/system/base/lsb-release/actions.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+from pisi.actionsapi import autotools
+from pisi.actionsapi import get
+
+def build():
+ pisitools.dosed("Makefile", "prefix=.*", "prefix=%s" % get.defaultprefixDIR())
+ autotools.make()
+
+def install():
+ autotools.install()
+
+ pisitools.dodir("/etc")
+
+ pisitools.dodoc("README", "ChangeLog")
diff --git a/system/base/lsb-release/files/lsb-release b/system/base/lsb-release/files/lsb-release
new file mode 100644
index 00000000..5d647380
--- /dev/null
+++ b/system/base/lsb-release/files/lsb-release
@@ -0,0 +1,4 @@
+DISTRIB_ID="PisiLinux"
+DISTRIB_RELEASE="1.2"
+DISTRIB_DESCRIPTION="Pisi GNU/Linux 1.2"
+DISTRIB_CODENAME=""
diff --git a/system/base/lsb-release/pspec.xml b/system/base/lsb-release/pspec.xml
new file mode 100644
index 00000000..c91f6793
--- /dev/null
+++ b/system/base/lsb-release/pspec.xml
@@ -0,0 +1,96 @@
+
+
+
+
+ lsb-release
+ http://www.linuxbase.org
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv2
+ app:console
+ LSB version query program
+ lsb-release prints certain LSB (Linux Standard Base) and distribution information.
+ mirrors://sourceforge/project/lsb/lsb_release/1.4/lsb-release-1.4.tar.gz
+
+
+
+ lsb-release
+
+ /usr/bin
+ /etc
+ /usr/share/man
+ /usr/share/doc
+
+
+ lsb-release
+
+
+
+
+
+ 2015-01-16
+ 1.4
+ Release Pisi Linux 1.2
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2014-11-03
+ 1.4
+ Release Pisi Linux 1.1
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2014-07-16
+ 1.4
+ Release Pisi Linux 1.0
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2014-05-11
+ 1.4
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-03-16
+ 1.4
+ Rc2 name Erdinc for Erdinç Gültekin.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-12-20
+ 1.4
+ Rc2
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-08-20
+ 1.4
+ RC1
+ Erdinç Gültekin
+ erdincgultekin@pisilinux.org
+
+
+ 2013-08-11
+ 1.4
+ sueno
+ Erdinç Gültekin
+ erdincgultekin@pisilinux.org
+
+
+ 2012-08-23
+ 1.4
+ First release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/lsb-release/translations.xml b/system/base/lsb-release/translations.xml
new file mode 100644
index 00000000..155ece27
--- /dev/null
+++ b/system/base/lsb-release/translations.xml
@@ -0,0 +1,8 @@
+
+
+
+ lsb-release
+ LSB sürüm sorgulama aracı
+ lsb-release bazı dağıtıma özel tanımlayıcı bilgileri ekrana basan bir terminal aracıdır.
+
+
diff --git a/system/base/lvm2/actions.py b/system/base/lvm2/actions.py
new file mode 100644
index 00000000..b7e66566
--- /dev/null
+++ b/system/base/lvm2/actions.py
@@ -0,0 +1,106 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+
+def builddiet():
+ pisitools.flags.add("-fno-lto")
+ #dietCC = "diet %s %s %s -Os -static" % (get.CC(), get.CFLAGS(), get.LDFLAGS())
+ dietCC = "%s %s %s -Os -static" % (get.CC(), get.CFLAGS(), get.LDFLAGS())
+ shelltools.export("CC", dietCC)
+
+ autotools.make("distclean")
+ autotools.autoreconf("-fi")
+ autotools.configure('ac_cv_lib_dl_dlopen=no \
+ --with-staticdir="/sbin" \
+ --enable-debug \
+ --with-optimisation=\"%s -Os\" \
+ --enable-static_link \
+ --with-lvm1=internal \
+ --disable-readline \
+ --disable-nls \
+ --disable-selinux \
+ --with-confdir=/etc \
+ --enable-applib \
+ --enable-cmdlib \
+ --enable-pkgconfig \
+ --enable-udev_rules \
+ --enable-udev_sync' % get.CFLAGS())
+
+ pisitools.dosed("lib/misc/configure.h","rpl_malloc","malloc")
+ pisitools.dosed("lib/misc/configure.h","rpl_realloc","realloc")
+
+ autotools.make("-j1 -C include")
+ autotools.make("-j1 -C lib LIB_SHARED= VERSIONED_SHLIB=")
+ autotools.make("-j1 -C libdm LIB_SHARED= VERSIONED_SHLIB=")
+ autotools.make("-j1 -C libdaemon LIB_SHARED= VERSIONED_SHLIB=")
+ autotools.make("-j1 -C tools dmsetup.static lvm.static DIETLIBC_LIBS=\"-lcompat\"")
+
+ pisitools.insinto("/usr/lib/dietlibc/lib-i386", "libdm/ioctl/libdevmapper.a")
+ pisitools.insinto("/sbin/", "tools/lvm.static")
+ pisitools.insinto("/sbin/", "tools/dmsetup.static")
+
+
+def setup():
+ # Breaks linking when sandbox is disabled
+ shelltools.export("CLDFLAGS", get.LDFLAGS())
+
+ shelltools.export("LIB_PTHREAD", "-lpthread")
+ pisitools.dosed("conf/example.conf.in", "use_lvmetad = 0", "use_lvmetad = 1")
+
+ autotools.autoreconf("-fi")
+ autotools.configure("--enable-lvm1_fallback \
+ --with-default-pid-dir=/run \
+ --with-default-run-dir=/run/lvm \
+ --with-default-locking-dir=/run/lock/lvm \
+ --with-dmeventd-path=/sbin/dmeventd \
+ --enable-fsadm \
+ --with-pool=internal \
+ --with-user= \
+ --with-group= \
+ --with-usrlibdir=/usr/lib \
+ --with-usrsbindir=%s \
+ --with-udevdir=/lib/udev/rules.d \
+ --with-device-uid=0 \
+ --with-device-gid=6 \
+ --with-device-mode=0660 \
+ --enable-dmeventd \
+ --enable-udev_rules \
+ --enable-udev_sync \
+ --with-snapshots=internal \
+ --with-mirrors=internal \
+ --with-interface=ioctl \
+ --enable-static_link=no \
+ --disable-readline \
+ --disable-realtime \
+ --disable-selinux \
+ --with-confdir=/etc \
+ --enable-applib \
+ --enable-cmdlib \
+ --enable-pkgconfig " % get.sbinDIR())
+
+# pisitools.dosed("make.tmpl","-lm","")
+
+def build():
+ autotools.make("-C include")
+ #autotools.make("-C libdm")
+ #autotools.make("-C lib")
+ autotools.make()
+
+def install():
+ autotools.rawInstall('DESTDIR=%s' % get.installDIR())
+
+ for dir in ["archive", "backup", "cache"]:
+ pisitools.dodir("/etc/lvm/%s" % dir)
+ shelltools.chmod(get.installDIR() + "/etc/lvm/%s" % dir, 0700)
+
+ #pisitools.move("/sbin/lvmconf","scripts/lvmconf.sh")
+
+ builddiet()
+ pisitools.dodoc("COPYING", "COPYING.LIB", "README", "VERSION", "VERSION_DM", "WHATS_NEW", "WHATS_NEW_DM")
diff --git a/system/base/lvm2/comar/package.py b/system/base/lvm2/comar/package.py
new file mode 100644
index 00000000..e31e03f3
--- /dev/null
+++ b/system/base/lvm2/comar/package.py
@@ -0,0 +1,6 @@
+#!/usr/bin/python
+
+import os
+
+def postInstall(fromVersion, fromRelease, toVersion, toRelease):
+ os.system("/sbin/mudur_tmpfiles.py /usr/lib/tmpfiles.d/lvm2.conf")
\ No newline at end of file
diff --git a/system/base/lvm2/files/lvm2-2.02.105-pthread-pkgconfig.patch b/system/base/lvm2/files/lvm2-2.02.105-pthread-pkgconfig.patch
new file mode 100644
index 00000000..30f9afdf
--- /dev/null
+++ b/system/base/lvm2/files/lvm2-2.02.105-pthread-pkgconfig.patch
@@ -0,0 +1,36 @@
+Make sure that libdm usage always brings in pthread libraries, both in
+pkgconfig and during manual build.
+
+Signed-off-by: Robin H. Johnson
+
+diff -Nuar LVM2.2.02.105.orig/libdm/libdevmapper.pc.in LVM2.2.02.105/libdm/libdevmapper.pc.in
+--- LVM2.2.02.105.orig/libdm/libdevmapper.pc.in 2014-01-20 11:25:30.000000000 -0800
++++ LVM2.2.02.105/libdm/libdevmapper.pc.in 2014-02-01 14:50:58.805455421 -0800
+@@ -8,4 +8,5 @@
+ Version: @DM_LIB_PATCHLEVEL@
+ Cflags: -I${includedir}
+ Libs: -L${libdir} -ldevmapper
++Libs.private: -L${libdir} @PTHREAD_LIBS@
+ Requires.private: @SELINUX_PC@ @UDEV_PC@
+diff -Nuar LVM2.2.02.105/tools/Makefile.in LVM2.2.02.105.orig/tools/Makefile.in
+--- LVM2.2.02.105/tools/Makefile.in 2014-02-03 18:33:19.032894499 -0800
++++ LVM2.2.02.105.orig/tools/Makefile.in 2014-02-03 18:36:41.738459116 -0800
+@@ -86,6 +86,7 @@
+ INSTALL_LVM_TARGETS += install_tools_static
+ INSTALL_DMSETUP_TARGETS += install_dmsetup_static
+ INSTALL_CMDLIB_TARGETS += install_cmdlib_static
++ STATIC_LIBS += @PTHREAD_LIBS@
+ endif
+
+ LVMLIBS = $(LVMINTERNAL_LIBS)
+@@ -119,6 +119,10 @@
+
+ include $(top_builddir)/make.tmpl
+
++ifeq ("@STATIC_LINK@", "yes")
++ STATIC_LIBS += @PTHREAD_LIBS@
++endif
++
+ device-mapper: $(TARGETS_DM)
+
+ CFLAGS_dmsetup.o += $(UDEV_CFLAGS) $(EXTRA_EXEC_CFLAGS)
diff --git a/system/base/lvm2/files/lvm2-2.02.106-static-pkgconfig-libs.patch b/system/base/lvm2/files/lvm2-2.02.106-static-pkgconfig-libs.patch
new file mode 100644
index 00000000..ae356bf7
--- /dev/null
+++ b/system/base/lvm2/files/lvm2-2.02.106-static-pkgconfig-libs.patch
@@ -0,0 +1,56 @@
+--- configure.in~ 2014-05-09 18:12:36.163307302 +0200
++++ configure.in 2014-05-09 18:14:08.233307001 +0200
+@@ -1040,6 +1040,7 @@
+ ])
+ if test x$BLKID_WIPING = xyes; then
+ BLKID_PC="blkid"
++ BLKID_STATIC_LIBS=`$PKG_CONFIG --static --libs $BLKID_PC`
+ AC_DEFINE([BLKID_WIPING_SUPPORT], 1, [Define to 1 to use libblkid detection of signatures when wiping.])
+ fi
+ fi
+@@ -1068,6 +1069,7 @@
+ pkg_config_init
+ fi
+ PKG_CHECK_MODULES(UDEV, libudev >= 143, [UDEV_PC="libudev"])
++ UDEV_STATIC_LIBS=`$PKG_CONFIG --static --libs libudev`
+ AC_DEFINE([UDEV_SYNC_SUPPORT], 1, [Define to 1 to enable synchronisation with udev processing.])
+ fi
+
+@@ -1694,6 +1694,7 @@
+ AC_SUBST(ELDFLAGS)
+ AC_SUBST(FSADM)
+ AC_SUBST(BLKDEACTIVATE)
++AC_SUBST(BLKID_STATIC_LIBS)
+ AC_SUBST(HAVE_LIBDL)
+ AC_SUBST(HAVE_REALTIME)
+ AC_SUBST(INTL)
+@@ -1750,6 +1751,7 @@
+ AC_SUBST(UDEV_SYSTEMD_BACKGROUND_JOBS)
+ AC_SUBST(UDEV_RULE_EXEC_DETECTION)
+ AC_SUBST(UDEV_HAS_BUILTIN_BLKID)
++AC_SUBST(UDEV_STATIC_LIBS)
+ AC_SUBST(WRITE_INSTALL)
+ AC_SUBST(DMEVENTD_PIDFILE)
+ AC_SUBST(LVMETAD_PIDFILE)
+--- make.tmpl.in~ 2014-05-09 18:12:40.353307288 +0200
++++ make.tmpl.in 2014-05-09 18:15:07.866640139 +0200
+@@ -43,7 +43,7 @@
+
+ LIBS = @LIBS@
+ # Extra libraries always linked with static binaries
+-STATIC_LIBS = $(SELINUX_LIBS) $(UDEV_LIBS) $(BLKID_LIBS)
++STATIC_LIBS = $(SELINUX_LIBS) $(UDEV_STATIC_LIBS) $(BLKID_STATIC_LIBS)
+ DEFS += @DEFS@
+ # FIXME set this only where it's needed, not globally?
+ CFLAGS += @CFLAGS@
+@@ -59,8 +59,10 @@
+ SELINUX_LIBS = @SELINUX_LIBS@
+ UDEV_CFLAGS = @UDEV_CFLAGS@
+ UDEV_LIBS = @UDEV_LIBS@
++UDEV_STATIC_LIBS = @UDEV_STATIC_LIBS@
+ BLKID_CFLAGS = @BLKID_CFLAGS@
+ BLKID_LIBS = @BLKID_LIBS@
++BLKID_STATIC_LIBS=@BLKID_STATIC_LIBS@
+ TESTING = @TESTING@
+
+ # Setup directory variables
diff --git a/system/base/lvm2/files/lvm2-2.02.63-always-make-static-libdm.patch b/system/base/lvm2/files/lvm2-2.02.63-always-make-static-libdm.patch
new file mode 100644
index 00000000..5ddcb4e5
--- /dev/null
+++ b/system/base/lvm2/files/lvm2-2.02.63-always-make-static-libdm.patch
@@ -0,0 +1,42 @@
+diff -Nuar --exclude '*~' LVM2.2.02.63.orig/daemons/dmeventd/Makefile.in LVM2.2.02.63/daemons/dmeventd/Makefile.in
+--- LVM2.2.02.63.orig/daemons/dmeventd/Makefile.in 2010-04-09 14:42:48.000000000 -0700
++++ LVM2.2.02.63/daemons/dmeventd/Makefile.in 2010-04-19 11:53:27.000000000 -0700
+@@ -28,11 +28,12 @@
+ INSTALL_LIB_TARGETS = install_lib_dynamic
+
+ LIB_NAME = libdevmapper-event
++LIB_STATIC = $(LIB_NAME).a
++INSTALL_LIB_TARGETS += install_lib_static
++TARGETS += $(LIB_STATIC)
+ ifeq ("@STATIC_LINK@", "yes")
+- LIB_STATIC = $(LIB_NAME).a
+- TARGETS += $(LIB_STATIC) dmeventd.static
++ TARGETS += dmeventd.static
+ INSTALL_DMEVENTD_TARGETS += install_dmeventd_static
+- INSTALL_LIB_TARGETS += install_lib_static
+ endif
+
+ LIB_VERSION = $(LIB_VERSION_DM)
+diff -Nuar --exclude '*~' LVM2.2.02.63.orig/libdm/Makefile.in LVM2.2.02.63/libdm/Makefile.in
+--- LVM2.2.02.63.orig/libdm/Makefile.in 2010-04-09 14:42:51.000000000 -0700
++++ LVM2.2.02.63/libdm/Makefile.in 2010-04-19 11:52:20.000000000 -0700
+@@ -34,8 +34,8 @@
+
+ INCLUDES = -I$(srcdir)/$(interface) -I$(srcdir)
+
+-ifeq ("@STATIC_LINK@", "yes")
+ LIB_STATIC = $(interface)/libdevmapper.a
++ifeq ("@STATIC_LINK@", "yes")
+ endif
+
+ LIB_SHARED = $(interface)/libdevmapper.$(LIB_SUFFIX)
+@@ -63,8 +63,8 @@
+
+ INSTALL_TYPE = install_dynamic
+
+-ifeq ("@STATIC_LINK@", "yes")
+ INSTALL_TYPE += install_static
++ifeq ("@STATIC_LINK@", "yes")
+ endif
+
+ ifeq ("@PKGCONFIG@", "yes")
diff --git a/system/base/lvm2/files/lvm2-2.02.92-dynamic-static-ldflags.patch b/system/base/lvm2/files/lvm2-2.02.92-dynamic-static-ldflags.patch
new file mode 100644
index 00000000..de2b294e
--- /dev/null
+++ b/system/base/lvm2/files/lvm2-2.02.92-dynamic-static-ldflags.patch
@@ -0,0 +1,63 @@
+diff -Nuar --exclude '*.rej' --exclude '*.orig' LVM2.2.02.92.orig/configure.in LVM2.2.02.92/configure.in
+--- LVM2.2.02.92.orig/configure.in 2012-02-20 11:36:27.000000000 -0800
++++ LVM2.2.02.92/configure.in 2012-02-20 15:53:40.700124222 -0800
+@@ -32,6 +32,7 @@
+ COPTIMISE_FLAG="-O2"
+ CLDFLAGS="$CLDFLAGS -Wl,--version-script,.export.sym"
+ ELDFLAGS="-Wl,--export-dynamic"
++ STATIC_LDFLAGS="-Wl,--no-export-dynamic"
+ # FIXME Generate list and use --dynamic-list=.dlopen.sym
+ CLDWHOLEARCHIVE="-Wl,-whole-archive"
+ CLDNOWHOLEARCHIVE="-Wl,-no-whole-archive"
+@@ -1458,6 +1459,7 @@
+ AC_SUBST(SELINUX_PC)
+ AC_SUBST(SNAPSHOTS)
+ AC_SUBST(STATICDIR)
++AC_SUBST(STATIC_LDFLAGS)
+ AC_SUBST(STATIC_LINK)
+ AC_SUBST(TESTING)
+ AC_SUBST(THIN)
+diff -Nuar --exclude '*.rej' --exclude '*.orig' LVM2.2.02.92.orig/daemons/dmeventd/Makefile.in LVM2.2.02.92/daemons/dmeventd/Makefile.in
+--- LVM2.2.02.92.orig/daemons/dmeventd/Makefile.in 2012-02-20 15:48:04.861683196 -0800
++++ LVM2.2.02.92/daemons/dmeventd/Makefile.in 2012-02-20 15:52:50.732314588 -0800
+@@ -65,7 +65,7 @@
+ $(DL_LIBS) $(LVMLIBS) $(LIBS) -rdynamic
+
+ dmeventd.static: $(LIB_STATIC) dmeventd.o $(interfacebuilddir)/libdevmapper.a
+- $(CC) $(CFLAGS) $(LDFLAGS) $(ELDFLAGS) -static -L. -L$(interfacebuilddir) -o $@ \
++ $(CC) $(CFLAGS) $(LDFLAGS) $(ELDFLAGS) $(STATIC_LDFLAGS) -static -L. -L$(interfacebuilddir) -o $@ \
+ dmeventd.o $(DL_LIBS) $(LVMLIBS) $(LIBS) $(STATIC_LIBS)
+
+ ifeq ("@PKGCONFIG@", "yes")
+diff -Nuar --exclude '*.rej' --exclude '*.orig' LVM2.2.02.92.orig/make.tmpl.in LVM2.2.02.92/make.tmpl.in
+--- LVM2.2.02.92.orig/make.tmpl.in 2012-02-20 15:48:05.034685963 -0800
++++ LVM2.2.02.92/make.tmpl.in 2012-02-20 15:48:58.622550855 -0800
+@@ -38,6 +38,7 @@
+ ELDFLAGS += @ELDFLAGS@
+ LDDEPS += @LDDEPS@
+ LDFLAGS += @LDFLAGS@
++STATIC_LDFLAGS += @STATIC_LDFLAGS@
+ LIB_SUFFIX = @LIB_SUFFIX@
+ LVMINTERNAL_LIBS = -llvm-internal $(UDEV_LIBS) $(DL_LIBS)
+ DL_LIBS = @DL_LIBS@
+diff -Nuar --exclude '*.rej' --exclude '*.orig' LVM2.2.02.92.orig/tools/Makefile.in LVM2.2.02.92/tools/Makefile.in
+--- LVM2.2.02.92.orig/tools/Makefile.in 2011-11-14 13:30:36.000000000 -0800
++++ LVM2.2.02.92/tools/Makefile.in 2012-02-20 15:52:25.242901501 -0800
+@@ -126,7 +126,7 @@
+ -o $@ dmsetup.o -ldevmapper $(LIBS)
+
+ dmsetup.static: dmsetup.o $(interfacebuilddir)/libdevmapper.a
+- $(CC) $(CFLAGS) $(LDFLAGS) -static -L$(interfacebuilddir) \
++ $(CC) $(CFLAGS) $(LDFLAGS) $(STATIC_LDFLAGS) -static -L$(interfacebuilddir) \
+ -o $@ dmsetup.o -ldevmapper $(STATIC_LIBS) $(LIBS)
+
+ all: device-mapper
+@@ -136,7 +136,7 @@
+ $(LVMLIBS) $(READLINE_LIBS) $(LIBS) -rdynamic
+
+ lvm.static: $(OBJECTS) lvm-static.o $(top_builddir)/lib/liblvm-internal.a $(interfacebuilddir)/libdevmapper.a
+- $(CC) $(CFLAGS) $(LDFLAGS) -static -L$(interfacebuilddir) -o $@ \
++ $(CC) $(CFLAGS) $(LDFLAGS) $(STATIC_LDFLAGS) -static -L$(interfacebuilddir) -o $@ \
+ $(OBJECTS) lvm-static.o $(LVMLIBS) $(STATIC_LIBS) $(LIBS)
+
+ liblvm2cmd.a: $(top_builddir)/lib/liblvm-internal.a $(OBJECTS) lvmcmdlib.o lvm2cmd.o
diff --git a/system/base/lvm2/files/tmpfiles.conf b/system/base/lvm2/files/tmpfiles.conf
new file mode 100644
index 00000000..50c0885d
--- /dev/null
+++ b/system/base/lvm2/files/tmpfiles.conf
@@ -0,0 +1,2 @@
+d /run/lvm 0755 root root - -
+d /run/lock/lvm 0755 root root - -
diff --git a/system/base/lvm2/pspec.xml b/system/base/lvm2/pspec.xml
new file mode 100644
index 00000000..7eef1335
--- /dev/null
+++ b/system/base/lvm2/pspec.xml
@@ -0,0 +1,232 @@
+
+
+
+
+ lvm2
+ http://sources.redhat.com/lvm/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv2
+ app:console
+ Userland logical volume management tools
+ LVM2 includes all of the support for handling read/write operations physical and logical volumes.
+ ftp://sources.redhat.com/pub/lvm2/LVM2.2.02.111.tgz
+
+ libuuid-devel
+ libblkid-devel
+
+
+ lvm2-2.02.63-always-make-static-libdm.patch
+ lvm2-2.02.92-dynamic-static-ldflags.patch
+ lvm2-2.02.105-pthread-pkgconfig.patch
+ lvm2-2.02.106-static-pkgconfig-libs.patch
+
+
+
+
+ device-mapper
+
+ libudev
+
+ Light-weight kernel component can support user-space tools for logical volume management
+ Device-mapper includes the driver enables the definition of new block devices composed of ranges of sectors of existing devices to define disk partitions or logical volumes.
+
+ /usr/sbin/dmsetup
+ /usr/lib/libdevmapper.a
+ /usr/lib/libdevmapper.so*
+ /lib/udev/rules.d/10-dm.rules
+ /lib/udev/rules.d/13-dm-disk.rules
+ /lib/udev/rules.d/95-dm-notify.rules
+ /usr/share/doc/VERSION_DM
+ /usr/share/doc/WHATS_NEW_DM
+ /usr/share/man/man8/dmsetup.8
+
+
+
+
+ device-mapper-devel
+ system.devel
+ Development libraries and headers for device-mapper
+ Device-mapper-devel contains files needed to develop applications that use the device-mapper libraries.
+
+ device-mapper
+
+
+ /usr/include/libdevmapper.h
+ /usr/lib/pkgconfig/devmapper.pc
+
+
+
+
+ device-mapper-event
+ Device-mapper event daemon
+ This package contains the dmeventd daemon for monitoring the state of device-mapper devices.
+
+ device-mapper
+
+
+ /usr/sbin/dmeventd
+ /usr/lib/libdevmapper-event.a
+ /usr/lib/libdevmapper-event.so*
+ /usr/lib/libdevmapper-event-lvm2thin.so
+ /usr/lib/device-mapper/libdevmapper-event-lvm2thin.so
+ /usr/share/man/man8/dmeventd.8
+
+
+
+
+ device-mapper-event-devel
+ system.devel
+ Development libraries and headers for the device-mapper event daemon
+ This contains contains files needed to develop applications that use the device-mapper event library.
+
+ device-mapper-event
+
+
+ /usr/include/libdevmapper-event.h
+ /usr/lib/pkgconfig/devmapper-event.pc
+
+
+
+
+ lvm2
+ Userland logical volume management tools
+ LVM2 includes all of the support for handling read/write operations on physical volumes,creating volume groups from one or more physical volumes and creating one or more logical volumes in volume groups.
+
+ device-mapper
+ device-mapper-event
+ libudev
+ libblkid
+
+
+ /sbin/lvmconf
+ /usr/sbin/blkdeactivate
+ /usr/sbin/fsadm
+ /usr/sbin/lv*
+ /usr/sbin/vg*
+ /usr/sbin/pv*
+ /usr/lib/liblvm2app.so*
+ /usr/lib/liblvm2cmd.so*
+ /usr/lib/libdevmapper-event-lvm2.so*
+ /usr/lib/device-mapper/libdevmapper-event-lvm2mirror.so
+ /usr/lib/device-mapper/libdevmapper-event-lvm2snapshot.so
+ /usr/lib/libdevmapper-event-lvm2mirror.so
+ /usr/lib/libdevmapper-event-lvm2snapshot.so
+ /usr/lib/libdevmapper-event-lvm2raid.so
+ /usr/lib/device-mapper/libdevmapper-event-lvm2raid.so
+ /etc/lvm
+ /etc/lvm/archive
+ /etc/lvm/backup
+ /etc/lvm/cache
+ /var/lock/lvm
+ /lib/udev/rules.d/11-dm-lvm.rules
+ /usr/lib/tmpfiles.d/lvm2.conf
+ /usr/share/doc
+ /usr/share/man/man5/lvm.conf.5
+ /usr/share/man/man7/lvmthin.7
+ /usr/share/man/man8/fsadm.8
+ /usr/share/man/man8/blkdeactivate.8
+ /usr/share/man/man8/*pv*
+ /usr/share/man/man8/*lv*
+ /usr/share/man/man8/*vg*
+
+
+ tmpfiles.conf
+
+
+ System.Package
+
+
+
+
+ lvm2-devel
+ system.devel
+ Development libraries and headers
+ This package contains files needed to develop applications that use the lvm2 libraries.
+
+ lvm2
+ device-mapper-devel
+ device-mapper-event-devel
+
+
+ /usr/include/lvm2cmd.h
+ /usr/include/lvm2app.h
+ /usr/lib/pkgconfig/lvm2app.pc
+
+
+
+
+ dietlibc-libdevmapper
+ system.devel
+ Static devmapper library built with dietlibc
+ device mapper contains ioctl library and utilities for use with logical volume management (LVM2) built with dietlibc
+
+ /usr/lib/dietlibc/lib-i386/libdevmapper.a
+
+
+
+
+ device-mapper-static
+ Staticaly linked Device-mapper library and utility
+ device mapper contains statically linked libraries and utility for initramfs.
+
+ /sbin/dmsetup.static
+
+
+
+
+ lvm2-static
+ Staticaly linked Logical Volume Management utilities
+ Number of utilities for creating, checking, and repairing logical volumes - statically linked for initramfs.
+
+ /sbin/lvm.static
+
+
+
+
+
+ 2014-09-04
+ 2.02.111
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-05-09
+ 2.02.106
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-04-07
+ 2.02.105
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-11-09
+ 2.02.103
+ Version bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-07-26
+ 2.02.98
+ Fix dep, release bump.
+ Serdar Soytetir
+ kaptanan@pisilinux.org
+
+
+ 2012-11-14
+ 2.02.98
+ First release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/lvm2/translations.xml b/system/base/lvm2/translations.xml
new file mode 100644
index 00000000..1727927f
--- /dev/null
+++ b/system/base/lvm2/translations.xml
@@ -0,0 +1,53 @@
+
+
+
+ lvm2
+ Mantıksal Hacim Yönetimi aracı
+ LVM fiziksel ve mantıksal hacimler üzerinde gerçekleştirilen bütün okuma/yazma işlemlerini destekleyen araçları içerir.
+
+
+
+ lvm2-devel
+ lvm2 için geliştirme dosyaları
+
+
+
+ lvm2-static
+ Statik bağlanmış LVM araçları
+ İnitramfs içinde kullanılan statik bağlanmış mantıksal hacim yönetimi aracıdır.
+
+
+
+ device-mapper
+ Mantıksal hacim yönetimi için gerekli hafif düzeydeki modülleri ve araçları içerir
+ device-mapper mevcut aygıtlardan yeni blok aygıtları yada mantıksal hacimler yaratır.
+
+
+
+ device-mapper-devel
+ device-mapper için geliştirme dosyaları
+
+
+
+ device-mapper-event
+ Device mapper durum servisi
+
+
+
+ device-mapper-event-devel
+ device-mapper-event için geliştirme dosyaları
+
+
+
+ device-mapper-static
+ Static bağlanmış device-mapper kütüphanesi ve aracı
+ İnitramfs içinde kullanılan mantıksal hacim yönetimi için gerekli statik bağlanmış araçlardır.
+
+
+
+ dietlibc-libdevmapper
+ Statik bağlanmış device-mapper kütüphanesi
+ Dietlibc kütüphanesiyle statik derlenmiş device-mapper kütüphanesidir.
+
+
+
diff --git a/system/base/lzo/actions.py b/system/base/lzo/actions.py
new file mode 100644
index 00000000..4cd893d4
--- /dev/null
+++ b/system/base/lzo/actions.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+
+examples = "%s/%s/examples" % (get.docDIR(), get.srcNAME())
+
+def setup():
+ autotools.configure("--enable-shared")
+
+ shelltools.chmod("examples/*", 0644)
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ pisitools.dodoc("AUTHORS", "BUGS", "ChangeLog", "NEWS", "README", "THANKS", "doc/LZO*")
+
+ pisitools.insinto(examples, "examples/*.c")
+ pisitools.insinto(examples, "examples/*.h")
diff --git a/system/base/lzo/pspec.xml b/system/base/lzo/pspec.xml
new file mode 100644
index 00000000..c566e779
--- /dev/null
+++ b/system/base/lzo/pspec.xml
@@ -0,0 +1,77 @@
+
+
+
+
+ lzo
+ http://www.oberhumer.com/opensource/lzo/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv2
+ library
+ An extremely fast compression and decompression library
+ lzo is a library with very high compression and decompression speeds and very small memory usage. Provides low compression ratios but very high speeds.
+ http://www.oberhumer.com/opensource/lzo/download/lzo-2.08.tar.gz
+
+
+
+ lzo
+
+ /usr/lib
+ /usr/share/doc
+
+
+
+
+ lzo-devel
+ Development files for lzo
+
+ lzo
+
+
+ /usr/include
+
+
+
+
+ lzo-32bit
+ emul32
+ 32-bit shared libraries for lzo
+ emul32
+
+ /usr/lib32
+
+
+
+
+
+ 2014-07-03
+ 2.08
+ Version bump and security update (CVE-2014-4607).
+ Vedat Demir
+ vedat@pisilinux.org
+
+
+ 2014-05-11
+ 2.06
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-08-28
+ 2.06
+ Clean lzo.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2012-10-23
+ 2.06
+ First release
+ Erdinç Gültekin
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/lzo/translations.xml b/system/base/lzo/translations.xml
new file mode 100644
index 00000000..b2e3724e
--- /dev/null
+++ b/system/base/lzo/translations.xml
@@ -0,0 +1,13 @@
+
+
+
+ lzo
+ Çok hızlı bir sıkıştırma/açma kütüphanesi
+ lzo hızlı bir sıkıştırma/açma kütüphanesidir. Düşük sıkıştırma oranları verir fakat hem sıkıştırma hem açma işleminde bellek kullanımı çok düşüktür ve işlem hızı yüksektir.
+
+
+
+ lzo-devel
+ lzo için geliştirme dosyaları
+
+
diff --git a/system/base/mailcap/actions.py b/system/base/mailcap/actions.py
new file mode 100644
index 00000000..f3044e85
--- /dev/null
+++ b/system/base/mailcap/actions.py
@@ -0,0 +1,17 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def check():
+ autotools.make("check")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s sysconfdir=/%s mandir=/%s" % (get.installDIR(), get.confDIR(), get.manDIR()))
+
+ pisitools.dodoc("COPYING", "NEWS")
diff --git a/system/base/mailcap/files/extend-mailcap.patch b/system/base/mailcap/files/extend-mailcap.patch
new file mode 100644
index 00000000..4ae76413
--- /dev/null
+++ b/system/base/mailcap/files/extend-mailcap.patch
@@ -0,0 +1,19 @@
+Index: mailcap-2.1.37/mailcap
+===================================================================
+--- mailcap-2.1.37.orig/mailcap
++++ mailcap-2.1.37/mailcap
+@@ -3,11 +3,9 @@
+ ###
+
+ audio/*; /usr/bin/xdg-open %s
+-
++video/*; /usr/bin/xdg-open %s
+ image/*; /usr/bin/xdg-open %s
+
+-application/msword; /usr/bin/xdg-open %s
+-application/pdf; /usr/bin/xdg-open %s
+-application/postscript ; /usr/bin/xdg-open %s
++application/*; /usr/bin/xdg-open %s
+
+-text/html; /usr/bin/xdg-open %s ; copiousoutput
++text/*; /usr/bin/xdg-open %s ; copiousoutput
diff --git a/system/base/mailcap/pspec.xml b/system/base/mailcap/pspec.xml
new file mode 100644
index 00000000..2a6c9d57
--- /dev/null
+++ b/system/base/mailcap/pspec.xml
@@ -0,0 +1,55 @@
+
+
+
+
+ mailcap
+ http://git.fedorahosted.org/git/mailcap.git
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ MIT
+ public-domain
+ data
+ Helper application and MIME type associations for file types
+ mailcap file is used by the metamail program. Metamail reads the mailcap file to determine how it should display non-text or multimedia material.
+ https://fedorahosted.org/released/mailcap/mailcap-2.1.42.tar.xz
+
+
+ extend-mailcap.patch
+
+
+
+
+ mailcap
+
+ /etc
+ /usr/share/doc
+ /usr/share/man
+
+
+
+
+
+ 2014-05-11
+ 2.1.42
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-29
+ 2.1.42
+ Version bump.
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2011-06-01
+ 2.1.37
+ First release
+ Pisi Linux Admins
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/mailcap/translations.xml b/system/base/mailcap/translations.xml
new file mode 100644
index 00000000..4a303a31
--- /dev/null
+++ b/system/base/mailcap/translations.xml
@@ -0,0 +1,8 @@
+
+
+
+ mailcap
+ Dosya türleri için yardımcı uygulama ve MIME türü ilişkilendirmeleri
+ mailcap dosyası metamail ve bazı diğer uygulamalar tarafından, metin olmayan dosyaların ya da çokluortam dosyalarının nasıl açılacağını keşfetmek için kullanılır.
+
+
diff --git a/system/base/man-db/actions.py b/system/base/man-db/actions.py
new file mode 100644
index 00000000..a2c8be10
--- /dev/null
+++ b/system/base/man-db/actions.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import shelltools
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def setup():
+ autotools.configure("--disable-setuid \
+ --disable-rpath \
+ --with-sections=\"1 1p 8 2 3 3p 4 5 6 7 9 0p n l p o 1x 2x 3x 4x 5x 6x 7x 8x\" \
+ --docdir=/%s/%s \
+ --with-device=utf8 \
+ --enable-mb-groff" % (get.docDIR(), get.srcNAME()))
+
+def build():
+ shelltools.system("sed -i '/gets is a security hole/d' gnulib/lib/stdio.in.h")
+ autotools.make("CC='%s %s' V=1 nls=all" % (get.CC(), get.CFLAGS()))
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ pisitools.dodir("/var/cache/man")
+
+ # These are shipped with groff
+ pisitools.remove("/usr/bin/zsoelim")
+ pisitools.remove("/usr/share/man/man1/zsoelim.1")
+
+ pisitools.dodoc("README")
diff --git a/system/base/man-db/files/man-db-2.5.9-sgr.patch b/system/base/man-db/files/man-db-2.5.9-sgr.patch
new file mode 100644
index 00000000..a41cd210
--- /dev/null
+++ b/system/base/man-db/files/man-db-2.5.9-sgr.patch
@@ -0,0 +1,24 @@
+diff -up man-db-2.5.9/include/manconfig.h.in.sgr man-db-2.5.9/include/manconfig.h.in
+--- man-db-2.5.9/include/manconfig.h.in.sgr 2010-11-17 12:30:36.000000000 +0100
++++ man-db-2.5.9/include/manconfig.h.in 2010-11-24 11:29:57.000000000 +0100
+@@ -128,7 +128,7 @@
+
+ #ifndef NROFF_MISSING
+ # ifndef NROFF
+-# define NROFF "@nroff@"
++# define NROFF "@nroff@ -c"
+ # endif
+ #endif
+
+diff -up man-db-2.5.9/src/man_db.conf.in.sgr man-db-2.5.9/src/man_db.conf.in
+--- man-db-2.5.9/src/man_db.conf.in.sgr 2009-03-15 13:17:24.000000000 +0100
++++ man-db-2.5.9/src/man_db.conf.in 2010-11-24 11:27:45.000000000 +0100
+@@ -80,7 +80,7 @@ MANDB_MAP /opt/man /var/cache/man/opt
+ #DEFINE tr @tr@ '\255\267\264\327' '\055\157\047\170'
+ #DEFINE grep @grep@
+ #DEFINE troff @troff@
+-#DEFINE nroff @nroff@
++#DEFINE nroff @nroff@ -c
+ #DEFINE eqn @eqn@
+ #DEFINE neqn @neqn@
+ #DEFINE tbl @tbl@
diff --git a/system/base/man-db/files/man-db-2.6.1-locale-fallback.patch b/system/base/man-db/files/man-db-2.6.1-locale-fallback.patch
new file mode 100644
index 00000000..e749d5a3
--- /dev/null
+++ b/system/base/man-db/files/man-db-2.6.1-locale-fallback.patch
@@ -0,0 +1,31 @@
+diff -upr man-db-2.6.1.orig/lib/encodings.c man-db-2.6.1/lib/encodings.c
+--- man-db-2.6.1.orig/lib/encodings.c 2011-05-31 02:03:02.000000000 +0200
++++ man-db-2.6.1/lib/encodings.c 2012-06-15 18:32:37.393496286 +0200
+@@ -585,14 +585,23 @@ char *find_charset_locale (const char *c
+ if (STREQ (charset, get_locale_charset ()))
+ return NULL;
+
+- supported = fopen (supported_path, "r");
+- if (!supported)
+- return NULL;
+-
+ saved_locale = setlocale (LC_CTYPE, NULL);
+ if (saved_locale)
+ saved_locale = xstrdup (saved_locale);
+
++ supported = fopen (supported_path, "r");
++ if (!supported) {
++ if (strlen (charset) >= (size_t) 5
++ && strncmp (charset, "UTF-8", (size_t) 5) == 0) {
++ locale = xstrdup("en_US.UTF-8");
++ if (setlocale (LC_CTYPE, locale)) {
++ setlocale (LC_CTYPE, saved_locale);
++ return locale;
++ }
++ }
++ return NULL;
++ }
++
+ while (getline (&line, &n, supported) >= 0) {
+ const char *space = strchr (line, ' ');
+ if (space) {
diff --git a/system/base/man-db/files/man-db-2.6.1-so-links.patch b/system/base/man-db/files/man-db-2.6.1-so-links.patch
new file mode 100644
index 00000000..4bfc1503
--- /dev/null
+++ b/system/base/man-db/files/man-db-2.6.1-so-links.patch
@@ -0,0 +1,84 @@
+diff -up man-db-2.6.2/src/Makefile.am.so-links man-db-2.6.2/src/Makefile.am
+--- man-db-2.6.2/src/Makefile.am.so-links 2012-07-20 19:21:13.000000000 +0200
++++ man-db-2.6.2/src/Makefile.am 2012-07-20 19:21:13.000000000 +0200
+@@ -87,6 +87,8 @@ lexgrog_SOURCES = \
+ descriptions.h \
+ filenames.c \
+ filenames.h \
++ globbing.c \
++ globbing.h \
+ lexgrog.l \
+ lexgrog_test.c \
+ manconv.c \
+diff -up man-db-2.6.2/src/Makefile.in.so-links man-db-2.6.2/src/Makefile.in
+--- man-db-2.6.2/src/Makefile.in.so-links 2012-07-20 19:21:13.000000000 +0200
++++ man-db-2.6.2/src/Makefile.in 2012-07-20 19:21:39.000000000 +0200
+@@ -257,7 +257,7 @@ catman_DEPENDENCIES = $(am__DEPENDENCIES
+ am_globbing_OBJECTS = globbing.$(OBJEXT) globbing_test.$(OBJEXT)
+ globbing_OBJECTS = $(am_globbing_OBJECTS)
+ globbing_DEPENDENCIES = $(am__DEPENDENCIES_1)
+-am_lexgrog_OBJECTS = compression.$(OBJEXT) descriptions.$(OBJEXT) \
++am_lexgrog_OBJECTS = globbing.$(OBJEXT) compression.$(OBJEXT) descriptions.$(OBJEXT) \
+ filenames.$(OBJEXT) lexgrog.$(OBJEXT) lexgrog_test.$(OBJEXT) \
+ manconv.$(OBJEXT) manconv_client.$(OBJEXT) ult_src.$(OBJEXT)
+ lexgrog_OBJECTS = $(am_lexgrog_OBJECTS)
+@@ -1356,6 +1356,8 @@ lexgrog_SOURCES = \
+ descriptions.h \
+ filenames.c \
+ filenames.h \
++ globbing.c \
++ globbing.h \
+ lexgrog.l \
+ lexgrog_test.c \
+ manconv.c \
+diff -up man-db-2.6.2/src/ult_src.c.so-links man-db-2.6.2/src/ult_src.c
+--- man-db-2.6.2/src/ult_src.c.so-links 2012-06-18 04:28:56.000000000 +0200
++++ man-db-2.6.2/src/ult_src.c 2012-07-20 19:21:13.000000000 +0200
+@@ -59,6 +59,8 @@
+ #include
+
+ #include "canonicalize.h"
++#include "dirname.h"
++#include "globbing.h"
+
+ #include "gettext.h"
+ #define _(String) gettext (String)
+@@ -343,6 +345,38 @@ const char *ult_src (const char *name, c
+ free (base);
+ base = appendstr (NULL, path, "/", include,
+ NULL);
++
++ /* If the original path from above doesn't exist, try to create
++ * new path as if the "include" was relative to the current
++ * man page.
++ */
++ if (access (base, F_OK) != 0) {
++ char *dirname = mdir_name (name);
++ char *tempFile = appendstr (NULL, dirname, "/", include,
++ NULL);
++ free (dirname);
++ if (access (tempFile, F_OK) == 0) {
++ free (base);
++ base = canonicalize_filename_mode (tempFile,
++ CAN_EXISTING);
++ } else {
++ char *tempFileAsterisk = appendstr (NULL, tempFile,
++ "*", NULL);
++ char **possibleFiles = expand_path (tempFileAsterisk);
++ free (tempFileAsterisk);
++ if (access (possibleFiles[0], F_OK) == 0) {
++ free (base);
++ base = canonicalize_filename_mode (possibleFiles[0],
++ CAN_EXISTING);
++ }
++ int i;
++ for (i = 0; possibleFiles[i] != NULL; i++) {
++ free (possibleFiles[i]);
++ }
++ free (possibleFiles);
++ }
++ free (tempFile);
++ }
+ free (include);
+
+ debug ("ult_src: points to %s\n", base);
diff --git a/system/base/man-db/files/man-db-2.6.1-wildcards.patch b/system/base/man-db/files/man-db-2.6.1-wildcards.patch
new file mode 100644
index 00000000..008d7074
--- /dev/null
+++ b/system/base/man-db/files/man-db-2.6.1-wildcards.patch
@@ -0,0 +1,265 @@
+diff -up man-db-2.6.2/src/globbing.c.wildcards man-db-2.6.2/src/globbing.c
+--- man-db-2.6.2/src/globbing.c.wildcards 2010-09-26 23:08:14.000000000 +0200
++++ man-db-2.6.2/src/globbing.c 2012-07-20 19:18:20.000000000 +0200
+@@ -427,3 +427,30 @@ char **look_for_file (const char *hier,
+ else
+ return gbuf.gl_pathv;
+ }
++
++char **expand_path (const char *path)
++{
++ int res = 0;
++ char **result = NULL;
++ glob_t globbuf;
++
++ res = glob (path, 0, NULL, &globbuf);
++ /* if glob failed, return the given path */
++ if (res != 0) {
++ result = (char **) xmalloc (2 * sizeof(char **));
++ result[0] = xstrndup (path, strlen(path));
++ result[1] = NULL;
++ return result;
++ }
++
++ result = (char **) xmalloc ((globbuf.gl_pathc + 1) * sizeof(char **));
++ size_t i;
++ for (i = 0; i < globbuf.gl_pathc; i++) {
++ result[i] = xstrndup (globbuf.gl_pathv[i], strlen (globbuf.gl_pathv[i]));
++ }
++ result[globbuf.gl_pathc] = NULL;
++
++ globfree (&globbuf);
++
++ return result;
++}
+diff -up man-db-2.6.2/src/globbing.h.wildcards man-db-2.6.2/src/globbing.h
+--- man-db-2.6.2/src/globbing.h.wildcards 2008-12-11 00:06:18.000000000 +0100
++++ man-db-2.6.2/src/globbing.h 2012-07-20 19:18:20.000000000 +0200
+@@ -29,3 +29,6 @@ enum look_for_file_opts {
+ /* globbing.c */
+ extern char **look_for_file (const char *hier, const char *sec,
+ const char *unesc_name, int cat, int opts);
++
++/* Expand path with wildcards into list of all existing directories. */
++extern char **expand_path (const char *path);
+diff -up man-db-2.6.2/src/Makefile.am.wildcards man-db-2.6.2/src/Makefile.am
+--- man-db-2.6.2/src/Makefile.am.wildcards 2012-02-05 14:25:20.000000000 +0100
++++ man-db-2.6.2/src/Makefile.am 2012-07-20 19:18:20.000000000 +0200
+@@ -72,6 +72,8 @@ zsoelim_LDADD = $(LIBMAN) $(libpipeline_
+ accessdb_SOURCES = \
+ accessdb.c
+ catman_SOURCES = \
++ globbing.c \
++ globbing.h \
+ catman.c \
+ manp.c \
+ manp.h
+@@ -140,10 +142,14 @@ mandb_SOURCES = \
+ ult_src.c \
+ ult_src.h
+ manpath_SOURCES = \
++ globbing.c \
++ globbing.h \
+ manp.c \
+ manp.h \
+ manpath.c
+ whatis_SOURCES = \
++ globbing.c \
++ globbing.h \
+ manconv.c \
+ manconv.h \
+ manp.c \
+diff -up man-db-2.6.2/src/Makefile.in.wildcards man-db-2.6.2/src/Makefile.in
+--- man-db-2.6.2/src/Makefile.in.wildcards 2012-06-18 14:39:42.000000000 +0200
++++ man-db-2.6.2/src/Makefile.in 2012-07-20 19:20:29.000000000 +0200
+@@ -251,7 +251,7 @@ accessdb_DEPENDENCIES = $(am__DEPENDENCI
+ AM_V_lt = $(am__v_lt_@AM_V@)
+ am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+ am__v_lt_0 = --silent
+-am_catman_OBJECTS = catman.$(OBJEXT) manp.$(OBJEXT)
++am_catman_OBJECTS = globbing.$(OBJEXT) catman.$(OBJEXT) manp.$(OBJEXT)
+ catman_OBJECTS = $(am_catman_OBJECTS)
+ catman_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2)
+ am_globbing_OBJECTS = globbing.$(OBJEXT) globbing_test.$(OBJEXT)
+@@ -282,10 +282,10 @@ am_mandb_OBJECTS = check_mandirs.$(OBJEX
+ mandb_OBJECTS = $(am_mandb_OBJECTS)
+ mandb_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_2)
+-am_manpath_OBJECTS = manp.$(OBJEXT) manpath.$(OBJEXT)
++am_manpath_OBJECTS = globbing.$(OBJEXT) manp.$(OBJEXT) manpath.$(OBJEXT)
+ manpath_OBJECTS = $(am_manpath_OBJECTS)
+ manpath_DEPENDENCIES = $(am__DEPENDENCIES_1)
+-am_whatis_OBJECTS = manconv.$(OBJEXT) manp.$(OBJEXT) whatis.$(OBJEXT)
++am_whatis_OBJECTS = globbing.$(OBJEXT) manconv.$(OBJEXT) manp.$(OBJEXT) whatis.$(OBJEXT)
+ whatis_OBJECTS = $(am_whatis_OBJECTS)
+ whatis_DEPENDENCIES = $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_2)
+@@ -1340,6 +1340,8 @@ accessdb_SOURCES = \
+
+ catman_SOURCES = \
+ catman.c \
++ globbing.c \
++ globbing.h \
+ manp.c \
+ manp.h
+
+@@ -1413,11 +1415,15 @@ mandb_SOURCES = \
+ ult_src.h
+
+ manpath_SOURCES = \
++ globbing.c \
++ globbing.h \
+ manp.c \
+ manp.h \
+ manpath.c
+
+ whatis_SOURCES = \
++ globbing.c \
++ globbing.h \
+ manconv.c \
+ manconv.h \
+ manp.c \
+diff -up man-db-2.6.2/src/manp.c.wildcards man-db-2.6.2/src/manp.c
+--- man-db-2.6.2/src/manp.c.wildcards 2012-02-05 14:18:59.000000000 +0100
++++ man-db-2.6.2/src/manp.c 2012-07-20 19:18:20.000000000 +0200
+@@ -75,6 +75,7 @@
+ #endif
+
+ #include "manp.h"
++#include "globbing.h"
+
+ struct list {
+ char *key;
+@@ -1035,32 +1036,45 @@ char *get_manpath_from_path (const char
+ static void add_dir_to_list (char **lp, const char *dir)
+ {
+ int status;
+- int pos = 0;
+-
+- while (*lp != NULL) {
+- if (pos > MAXDIRS - 1)
+- gripe_overlong_list ();
+- if (!strcmp (*lp, dir)) {
+- debug ("%s is already in the manpath\n", dir);
+- return;
++ int pos = 0, i = 0;
++ char *d = NULL;
++ char **expanded_dirs = NULL;
++
++ expanded_dirs = expand_path (dir);
++ for (i = 0; expanded_dirs[i] != NULL; i++) {
++ d = expanded_dirs[i];
++
++ while (*lp != NULL) {
++ if (pos > MAXDIRS - 1)
++ gripe_overlong_list ();
++ if (!strcmp (*lp, d)) {
++ debug ("%s is already in the manpath\n", d);
++ return;
++ }
++ lp++;
++ pos++;
+ }
+- lp++;
+- pos++;
+- }
+
+- /* Not found -- add it. */
++ /* Not found -- add it. */
++
++ status = is_directory (d);
+
+- status = is_directory (dir);
++ if (status < 0)
++ gripe_stat_file (d);
++ else if (status == 0)
++ gripe_not_directory (d);
++ else if (status == 1) {
++ debug ("adding %s to manpath\n", d);
+
+- if (status < 0)
+- gripe_stat_file (dir);
+- else if (status == 0)
+- gripe_not_directory (dir);
+- else if (status == 1) {
+- debug ("adding %s to manpath\n", dir);
++ *lp = xstrdup (d);
++ }
+
+- *lp = xstrdup (dir);
++ free (d);
+ }
++
++ /* free also the last NULL pointer */
++ free (expanded_dirs[i]);
++ free (expanded_dirs);
+ }
+
+ /* path does not exist in config file: check to see if path/../man,
+@@ -1104,33 +1118,47 @@ static inline char *has_mandir (const ch
+
+ static char **add_dir_to_path_list (char **mphead, char **mp, const char *p)
+ {
+- int status;
++ int status, i = 0;
+ char *cwd;
++ char *d = NULL;
++ char **expanded_dirs = NULL;
+
+ if (mp - mphead > MAXDIRS - 1)
+ gripe_overlong_list ();
+
+- status = is_directory (p);
+-
+- if (status < 0)
+- gripe_stat_file (p);
+- else if (status == 0)
+- gripe_not_directory (p);
+- else {
+- /* deal with relative paths */
++ expanded_dirs = expand_path (p);
++ for (i = 0; expanded_dirs[i] != NULL; i++) {
++ d = expanded_dirs[i];
++
++ status = is_directory (d);
++
++ if (status < 0)
++ gripe_stat_file (d);
++ else if (status == 0)
++ gripe_not_directory (d);
++ else {
++ /* deal with relative paths */
++
++ if (*d != '/') {
++ cwd = xgetcwd ();
++ if (!cwd)
++ error (FATAL, errno,
++ _("can't determine current directory"));
++ *mp = appendstr (cwd, "/", d, NULL);
++ } else
++ *mp = xstrdup (d);
+
+- if (*p != '/') {
+- cwd = xgetcwd ();
+- if (!cwd)
+- error (FATAL, errno,
+- _("can't determine current directory"));
+- *mp = appendstr (cwd, "/", p, NULL);
+- } else
+- *mp = xstrdup (p);
++ debug ("adding %s to manpathlist\n", *mp);
++ mp++;
++ }
+
+- debug ("adding %s to manpathlist\n", *mp);
+- mp++;
++ free (d);
+ }
++
++ /* free also the last NULL pointer */
++ free (expanded_dirs[i]);
++ free (expanded_dirs);
++
+ return mp;
+ }
+
diff --git a/system/base/man-db/files/man-db-2.6.2-invalid-cache.patch b/system/base/man-db/files/man-db-2.6.2-invalid-cache.patch
new file mode 100644
index 00000000..f0708a17
--- /dev/null
+++ b/system/base/man-db/files/man-db-2.6.2-invalid-cache.patch
@@ -0,0 +1,123 @@
+diff -upr man-db-2.6.2.orig/src/check_mandirs.c man-db-2.6.2/src/check_mandirs.c
+--- man-db-2.6.2.orig/src/check_mandirs.c 2011-07-09 20:53:38.000000000 +0200
++++ man-db-2.6.2/src/check_mandirs.c 2012-07-31 13:05:45.967640117 +0200
+@@ -190,8 +190,7 @@ void test_manfile (const char *file, con
+ comp extensions */
+ abs_filename = make_filename (path, NULL,
+ exists, "man");
+- debug ("test_manfile(): stat %s\n", abs_filename);
+- if (stat (abs_filename, &physical) == -1) {
++ if (abs_filename == NULL || stat (abs_filename, &physical) == -1) {
+ if (!opt_test)
+ dbdelete (manpage_base, exists);
+ } else {
+diff -upr man-db-2.6.2.orig/src/filenames.c man-db-2.6.2/src/filenames.c
+--- man-db-2.6.2.orig/src/filenames.c 2011-10-09 01:19:00.000000000 +0200
++++ man-db-2.6.2/src/filenames.c 2012-07-31 12:31:10.436885216 +0200
+@@ -27,6 +27,7 @@
+
+ #include
+ #include
++#include
+
+ #include "xvasprintf.h"
+
+@@ -61,6 +62,11 @@ char *make_filename (const char *path, c
+ if (in->comp && *in->comp != '-') /* Is there an extension? */
+ file = appendstr (file, ".", in->comp, NULL);
+
++ if (access (file, R_OK) != 0) {
++ free (file);
++ return NULL;
++ }
++
+ return file;
+ }
+
+diff -upr man-db-2.6.2.orig/src/man.c man-db-2.6.2/src/man.c
+--- man-db-2.6.2.orig/src/man.c 2012-05-15 01:24:17.000000000 +0200
++++ man-db-2.6.2/src/man.c 2012-07-31 13:04:48.629069419 +0200
+@@ -3103,6 +3103,9 @@ static int add_candidate (struct candida
+ name = req_name;
+
+ filename = make_filename (path, name, source, cat ? "cat" : "man");
++ if (filename == NULL) {
++ return 0;
++ }
+ ult = ult_src (filename, path, NULL,
+ get_ult_flags (from_db, source->id), NULL);
+ free (filename);
+@@ -3309,6 +3312,9 @@ static int display_filesystem (struct ca
+ {
+ char *filename = make_filename (candp->path, NULL, candp->source,
+ candp->cat ? "cat" : "man");
++ if (filename == NULL) {
++ return 0;
++ }
+ /* source->name is never NULL thanks to add_candidate() */
+ char *title = appendstr (NULL, candp->source->name,
+ "(", candp->source->ext, ")", NULL);
+@@ -3392,14 +3398,14 @@ static int display_database (struct cand
+
+ if (in->id < STRAY_CAT) { /* There should be a src page */
+ file = make_filename (candp->path, name, in, "man");
+- debug ("Checking physical location: %s\n", file);
++ if (file != NULL) {
++ debug ("Checking physical location: %s\n", file);
+
+- if (access (file, R_OK) == 0) {
+ const char *man_file;
+ char *cat_file;
+
+ man_file = ult_src (file, candp->path, NULL,
+- get_ult_flags (1, in->id), NULL);
++ get_ult_flags (1, in->id), NULL);
+ if (man_file == NULL) {
+ free (title);
+ return found; /* zero */
+@@ -3416,7 +3422,7 @@ static int display_database (struct cand
+ free (lang);
+ lang = NULL;
+ } /* else {drop through to the bottom and return 0 anyway} */
+- } else
++ } else
+
+ #endif /* NROFF_MISSING */
+
+@@ -3441,9 +3447,9 @@ static int display_database (struct cand
+ }
+
+ file = make_filename (candp->path, name, in, "cat");
+- debug ("Checking physical location: %s\n", file);
+-
+- if (access (file, R_OK) != 0) {
++ if (file != NULL) {
++ debug ("Checking physical location: %s\n", file);
++ } else {
+ char *catpath;
+ catpath = get_catpath (candp->path,
+ global_manpath ? SYSTEM_CAT
+@@ -3453,10 +3459,10 @@ static int display_database (struct cand
+ file = make_filename (catpath, name,
+ in, "cat");
+ free (catpath);
+- debug ("Checking physical location: %s\n",
+- file);
+-
+- if (access (file, R_OK) != 0) {
++ if (file != NULL) {
++ debug ("Checking physical location: %s\n",
++ file);
++ } else {
+ /* don't delete here,
+ return==0 will do that */
+ free (title);
+@@ -3520,6 +3526,8 @@ static int maybe_update_file (const char
+ real_name = name;
+
+ file = make_filename (manpath, real_name, info, "man");
++ if (file == NULL)
++ return 0;
+ if (lstat (file, &buf) != 0)
+ return 0;
+ if (buf.st_mtime == info->_st_mtime)
diff --git a/system/base/man-db/files/man-db-2.6.3-overrides.patch b/system/base/man-db/files/man-db-2.6.3-overrides.patch
new file mode 100644
index 00000000..23707eba
--- /dev/null
+++ b/system/base/man-db/files/man-db-2.6.3-overrides.patch
@@ -0,0 +1,63 @@
+diff -up man-db-2.6.3/src/manp.c.overrides man-db-2.6.3/src/manp.c
+--- man-db-2.6.3/src/manp.c.overrides 2012-10-24 16:52:35.134486439 +0200
++++ man-db-2.6.3/src/manp.c 2012-10-24 16:59:28.300037133 +0200
+@@ -51,6 +51,7 @@
+ #include
+ #include
+ #include
++#include
+ #include
+ #include
+ #include
+@@ -95,6 +96,9 @@ static struct list *namestore, *tailstor
+ #define MANPATH_MAP 0
+ #define MANDATORY 1
+
++/* Subdirectory of MANPATH entries searched for man pages before the directory itself. */
++#define OVERRIDES_DIR "/overrides"
++
+ /* DIRLIST list[MAXDIRS]; */
+ static char *tmplist[MAXDIRS];
+
+@@ -933,6 +937,7 @@ char *get_manpath_from_path (const char
+ char **lp;
+ char *end;
+ char *manpathlist;
++ char overrides[MAXPATHLEN];
+ struct list *list;
+
+ tmppath = xstrdup (path);
+@@ -960,6 +965,9 @@ char *get_manpath_from_path (const char
+ if (mandir_list) {
+ debug ("is in the config file\n");
+ while (mandir_list) {
++ strcpy(overrides, mandir_list->cont);
++ strcat(overrides, OVERRIDES_DIR);
++ add_dir_to_list (tmplist, overrides);
+ add_dir_to_list (tmplist, mandir_list->cont);
+ mandir_list = iterate_over_list
+ (mandir_list, p, MANPATH_MAP);
+@@ -978,6 +986,9 @@ char *get_manpath_from_path (const char
+ "../share/man, or share/man "
+ "subdirectory\n");
+
++ strcpy(overrides, t);
++ strcat(overrides, OVERRIDES_DIR);
++ add_dir_to_list (tmplist, overrides);
+ add_dir_to_list (tmplist, t);
+ free (t);
+ } else
+@@ -993,8 +1004,12 @@ char *get_manpath_from_path (const char
+ debug ("\nadding mandatory man directories\n\n");
+
+ for (list = namestore; list; list = list->next)
+- if (list->flag == MANDATORY)
++ if (list->flag == MANDATORY) {
++ strcpy(overrides, list->key);
++ strcat(overrides, OVERRIDES_DIR);
++ add_dir_to_list (tmplist, overrides);
+ add_dir_to_list (tmplist, list->key);
++ }
+ }
+
+ len = 0;
diff --git a/system/base/man-db/files/mandb.conf b/system/base/man-db/files/mandb.conf
new file mode 100644
index 00000000..9b6193a5
--- /dev/null
+++ b/system/base/man-db/files/mandb.conf
@@ -0,0 +1,7 @@
+#
+# Set to no to disable daily man-db update by /etc/cron.daily/man-db.cron
+CRON="yes"
+
+# Options used by mandb in /etc/cron.daily/man-db.cron,
+# we use -q as default, too much noise without.
+OPTS="-q"
diff --git a/system/base/man-db/files/mandb.cron.daily b/system/base/man-db/files/mandb.cron.daily
new file mode 100644
index 00000000..a58aee70
--- /dev/null
+++ b/system/base/man-db/files/mandb.cron.daily
@@ -0,0 +1,27 @@
+#! /bin/bash
+
+if [ -e /etc/sysconfig/man-db ]; then
+ . /etc/sysconfig/man-db
+fi
+
+if [ "$CRON" = "no" ]; then
+ exit 0
+fi
+
+renice +19 -p $$ >/dev/null 2>&1
+ionice -c3 -p $$ >/dev/null 2>&1
+
+LOCKFILE=/var/lock/man-db.lock
+
+# the lockfile is not meant to be perfect, it's just in case the
+# two man-db cron scripts get run close to each other to keep
+# them from stepping on each other's toes. The worst that will
+# happen is that they will temporarily corrupt the database
+[ -f $LOCKFILE ] && exit 0
+
+trap "{ rm -f $LOCKFILE ; exit 255; }" EXIT
+touch $LOCKFILE
+# create/update the mandb database
+mandb $OPTS
+
+exit 0
diff --git a/system/base/man-db/pspec.xml b/system/base/man-db/pspec.xml
new file mode 100644
index 00000000..927dbdd7
--- /dev/null
+++ b/system/base/man-db/pspec.xml
@@ -0,0 +1,99 @@
+
+
+
+
+ man-db
+ http://www.nongnu.org/man-db/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv2+
+ GPLv3+
+ app:console
+ data:doc
+ Application to read Linux man pages
+ Man package consists of programs which is used to read most of the documentation available in linux system. For example, you can write "man nameoftheprogram" into the konsole or "man:nameoftheprogram" into the konqueror to get a detailed usage information for many programs.
+ http://download.savannah.gnu.org/releases/man-db/man-db-2.6.3.tar.xz
+
+ less
+ gzip
+ groff
+ gdbm-devel
+ zlib-devel
+ gettext-devel
+ libpipeline-devel
+
+
+ man-db-2.5.9-sgr.patch
+ man-db-2.6.1-locale-fallback.patch
+ man-db-2.6.1-so-links.patch
+ man-db-2.6.1-wildcards.patch
+ man-db-2.6.2-invalid-cache.patch
+ man-db-2.6.3-overrides.patch
+
+
+
+
+ man-db
+
+ gdbm
+ zlib
+ gettext
+ libpipeline
+
+
+ /etc
+ /usr/lib
+ /usr/bin
+ /usr/sbin
+ /usr/libexec
+ /usr/share/locale
+ /usr/share/doc
+ /usr/share/man
+ /var/cache
+
+
+ mandb.conf
+ mandb.cron.daily
+
+
+
+
+
+ 2014-05-11
+ 2.6.3
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-03-03
+ 2.6.3
+ Rebuild for openjdk.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-10-28
+ 2.6.3
+ rebuild.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-03-04
+ 2.6.3
+ Add some patches, cleanup.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2012-09-27
+ 2.6.3
+ First release
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+
diff --git a/system/base/man-db/translations.xml b/system/base/man-db/translations.xml
new file mode 100644
index 00000000..3f2280d2
--- /dev/null
+++ b/system/base/man-db/translations.xml
@@ -0,0 +1,8 @@
+
+
+
+ man-db
+ Kapsamlı Linux kılavuzları
+ man-db paketi Linux ile ilgili yazılmış dökümanların büyük çoğunluğunu okunması için gerekli programları sunar. Örneğin, konsola "man programadı" ya da konquerora "man:programadı" yazarak birçok program hakkında detaylı kullanım bilgisi alabilirsiniz.
+
+
diff --git a/system/base/man-pages/actions.py b/system/base/man-pages/actions.py
new file mode 100644
index 00000000..bff2c388
--- /dev/null
+++ b/system/base/man-pages/actions.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+ autotools.rawInstall("DESTDIR=%s -C man-pages-posix-2003-a" % get.installDIR())
+
+ # These come from attr
+ pisitools.remove("/usr/share/man/man2/flistxattr.2")
+ pisitools.remove("/usr/share/man/man2/removexattr.2")
+ pisitools.remove("/usr/share/man/man2/fgetxattr.2")
+ pisitools.remove("/usr/share/man/man2/fsetxattr.2")
+ pisitools.remove("/usr/share/man/man2/lsetxattr.2")
+ pisitools.remove("/usr/share/man/man2/lremovexattr.2")
+ pisitools.remove("/usr/share/man/man2/listxattr.2")
+ pisitools.remove("/usr/share/man/man2/getxattr.2")
+ pisitools.remove("/usr/share/man/man2/setxattr.2")
+ pisitools.remove("/usr/share/man/man2/llistxattr.2")
+ pisitools.remove("/usr/share/man/man2/fremovexattr.2")
+ pisitools.remove("/usr/share/man/man2/lgetxattr.2")
+
+ # These come from libcap
+ pisitools.remove("/usr/share/man/man2/capget.2")
+ pisitools.remove("/usr/share/man/man2/capset.2")
+
+ # Comes from xorg-input
+ pisitools.remove("/usr/share/man/man4/mouse.4")
+
+ pisitools.dodoc("man-pages-*.Announce", "README")
diff --git a/system/base/man-pages/files/man1/getent.1 b/system/base/man-pages/files/man1/getent.1
new file mode 100644
index 00000000..0ae06467
--- /dev/null
+++ b/system/base/man-pages/files/man1/getent.1
@@ -0,0 +1,229 @@
+.rn '' }`
+''' $RCSfile$$Revision$$Date$
+'''
+''' $Log$
+'''
+.de Sh
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp
+.if t .sp .5v
+.if n .sp
+..
+.de Ip
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.de Vb
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve
+.ft R
+
+.fi
+..
+'''
+'''
+''' Set up \*(-- to give an unbreakable dash;
+''' string Tr holds user defined translation string.
+''' Bell System Logo is used as a dummy character.
+'''
+.tr \(*W-|\(bv\*(Tr
+.ie n \{\
+.ds -- \(*W-
+.ds PI pi
+.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+.ds L" ""
+.ds R" ""
+''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
+''' \*(L" and \*(R", except that they are used on ".xx" lines,
+''' such as .IP and .SH, which do another additional levels of
+''' double-quote interpretation
+.ds M" """
+.ds S" """
+.ds N" """""
+.ds T" """""
+.ds L' '
+.ds R' '
+.ds M' '
+.ds S' '
+.ds N' '
+.ds T' '
+'br\}
+.el\{\
+.ds -- \(em\|
+.tr \*(Tr
+.ds L" ``
+.ds R" ''
+.ds M" ``
+.ds S" ''
+.ds N" ``
+.ds T" ''
+.ds L' `
+.ds R' '
+.ds M' `
+.ds S' '
+.ds N' `
+.ds T' '
+.ds PI \(*p
+'br\}
+.\" If the F register is turned on, we'll generate
+.\" index entries out stderr for the following things:
+.\" TH Title
+.\" SH Header
+.\" Sh Subsection
+.\" Ip Item
+.\" X<> Xref (embedded
+.\" Of course, you have to process the output yourself
+.\" in some meaninful fashion.
+.if \nF \{
+.de IX
+.tm Index:\\$1\t\\n%\t"\\$2"
+..
+.nr % 0
+.rr F
+.\}
+.TH GETENT 1 "July 2007" "Red Hat Linux"
+.UC
+.if n .hy 0
+.if n .na
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.de CQ \" put $1 in typewriter font
+.ft CW
+'if n "\c
+'if t \\&\\$1\c
+'if n \\&\\$1\c
+'if n \&"
+\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
+'.ft R
+..
+.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
+. \" AM - accent mark definitions
+.bd B 3
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds ? ?
+. ds ! !
+. ds /
+. ds q
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds v \h'-1'\o'\(aa\(ga'
+. ds _ \h'-1'^
+. ds . \h'-1'.
+. ds 3 3
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+. ds oe oe
+. ds Oe OE
+.\}
+.rm #[ #] #H #V #F C
+.SH "NAME"
+getent \- get entries from administrative database
+.SH "SYNOPSIS"
+\fBgetent\fR \fIdatabase\fR [\fIkey\fR ...]
+.SH "DESCRIPTION"
+The \fBgetent\fR program gathers entries from the specified
+administrative database using the specified search keys.
+\fIdatabase\fR is one of ahosts, ahostsv4, ahostsv6, aliases, ethers,
+group, hosts, netgroup, networks, passwd, protocols, rpc, services or
+shadow.
+.SH "EXIT STATUS"
+.IP 0
+Success; the requested entries were found.
+.IP 1
+Wrong number of or invalid arguments.
+.IP 2
+One or more of the requested entries could not be found.
+.IP 3
+Unsupported operation.
+.SH "AUTHOR"
+getent is written by Thorsten Kukuk for the GNU C Library.
+.PP
+This man page is written by Joel Klecker for
+the Debian GNU/Linux system, updated by Jakub Jelinek
+for GNU C Library 2.2.2 getent changes.
+
+.rn }` ''
+.IX Title "GETENT 1"
+.IX Name "getent - get entries from administrative database"
+
+.IX Header "NAME"
+
+.IX Header "SYNOPSIS"
+
+.IX Header "DESCRIPTION"
+
+.IX Header "EXIT STATUS"
+
+.IX Header "AUTHOR"
+
diff --git a/system/base/man-pages/files/man1/sprof.1 b/system/base/man-pages/files/man1/sprof.1
new file mode 100644
index 00000000..292a88b8
--- /dev/null
+++ b/system/base/man-pages/files/man1/sprof.1
@@ -0,0 +1,227 @@
+.rn '' }`
+''' $RCSfile$$Revision$$Date$
+'''
+''' $Log$
+'''
+.de Sh
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp
+.if t .sp .5v
+.if n .sp
+..
+.de Ip
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.de Vb
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve
+.ft R
+
+.fi
+..
+'''
+'''
+''' Set up \*(-- to give an unbreakable dash;
+''' string Tr holds user defined translation string.
+''' Bell System Logo is used as a dummy character.
+'''
+.tr \(*W-|\(bv\*(Tr
+.ie n \{\
+.ds -- \(*W-
+.ds PI pi
+.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+.ds L" ""
+.ds R" ""
+''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
+''' \*(L" and \*(R", except that they are used on ".xx" lines,
+''' such as .IP and .SH, which do another additional levels of
+''' double-quote interpretation
+.ds M" """
+.ds S" """
+.ds N" """""
+.ds T" """""
+.ds L' '
+.ds R' '
+.ds M' '
+.ds S' '
+.ds N' '
+.ds T' '
+'br\}
+.el\{\
+.ds -- \(em\|
+.tr \*(Tr
+.ds L" ``
+.ds R" ''
+.ds M" ``
+.ds S" ''
+.ds N" ``
+.ds T" ''
+.ds L' `
+.ds R' '
+.ds M' `
+.ds S' '
+.ds N' `
+.ds T' '
+.ds PI \(*p
+'br\}
+.\" If the F register is turned on, we'll generate
+.\" index entries out stderr for the following things:
+.\" TH Title
+.\" SH Header
+.\" Sh Subsection
+.\" Ip Item
+.\" X<> Xref (embedded
+.\" Of course, you have to process the output yourself
+.\" in some meaninful fashion.
+.if \nF \{
+.de IX
+.tm Index:\\$1\t\\n%\t"\\$2"
+..
+.nr % 0
+.rr F
+.\}
+.TH SPROF 1 "March 2001" "Red Hat Linux"
+.UC
+.if n .hy 0
+.if n .na
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.de CQ \" put $1 in typewriter font
+.ft CW
+'if n "\c
+'if t \\&\\$1\c
+'if n \\&\\$1\c
+'if n \&"
+\\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
+'.ft R
+..
+.\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
+. \" AM - accent mark definitions
+.bd B 3
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds ? ?
+. ds ! !
+. ds /
+. ds q
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
+. ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+. ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
+.ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
+.ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
+.ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.ds oe o\h'-(\w'o'u*4/10)'e
+.ds Oe O\h'-(\w'O'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds v \h'-1'\o'\(aa\(ga'
+. ds _ \h'-1'^
+. ds . \h'-1'.
+. ds 3 3
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+. ds oe oe
+. ds Oe OE
+.\}
+.rm #[ #] #H #V #F C
+.SH "NAME"
+sprof \- Read and display shared object profiling data
+.SH "SYNOPSIS"
+\fBsprof\fR \fB\-p\fR|\fB\-c\fR [\fB\-q\fR]
+.SH "DESCRIPTION"
+\fB--call-pairs\fR, \fB\-c\fR
+.PP
+.Vb 1
+\& print list of count paths and their number of use
+.Ve
+\fB--flat-profile\fR, \fB\-p\fR
+.PP
+.Vb 1
+\& generate flat profile with counts and ticks
+.Ve
+\fB--graph\fR, \fB\-q\fR
+.PP
+.Vb 1
+\& generate call graph
+.Ve
+.SH "AUTHOR"
+sprof is written by Ulrich Drepper for the GNU C Library
+.PP
+This man page is written by Joel Klecker for
+the Debian GNU/Linux system.
+
+.rn }` ''
+.IX Title "SPROF 1"
+.IX Name "sprof - Read and display shared object profiling data"
+
+.IX Header "NAME"
+
+.IX Header "SYNOPSIS"
+
+.IX Header "DESCRIPTION"
+
+.IX Header "AUTHOR"
+
diff --git a/system/base/man-pages/pspec.xml b/system/base/man-pages/pspec.xml
new file mode 100644
index 00000000..603838fc
--- /dev/null
+++ b/system/base/man-pages/pspec.xml
@@ -0,0 +1,78 @@
+
+
+
+
+ man-pages
+ http://www.win.tue.nl/~aeb/linux/man/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv2
+ data:doc
+ A somewhat comprehensive collection of Linux man pages
+ A large collection of man pages (documentation) from the Linux Documentation Project (LDP).
+ http://ftp.kernel.org/pub/linux/docs/man-pages/man-pages-3.70.tar.xz
+ http://www.kernel.org/pub/linux/docs/man-pages/man-pages-posix/man-pages-posix-2003-a.tar.xz
+
+
+
+ man-pages
+
+ man-db
+
+
+ /usr/share/doc
+ /usr/share/man
+
+
+ man1/getent.1
+ man1/sprof.1
+
+
+
+
+
+ 2014-07-13
+ 3.70
+ Version bump.
+ Vedat Demir
+ vedat@pisilinux.org
+
+
+ 2014-05-11
+ 3.55
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-28
+ 3.55
+ Version bump.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-10-28
+ 3.47
+ Version bump.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-03-04
+ 3.47
+ Version bump.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2011-01-04
+ 3.32
+ First release
+ Pisi Linux Admins
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/man-pages/translations.xml b/system/base/man-pages/translations.xml
new file mode 100644
index 00000000..d1dd2177
--- /dev/null
+++ b/system/base/man-pages/translations.xml
@@ -0,0 +1,8 @@
+
+
+
+ man-pages
+ Kapsamlı Linux kılavuz dökümanları
+ Une collection de pages de manuel Linux compréhensibles d'une certaine manière.
+
+
diff --git a/system/base/mingetty/actions.py b/system/base/mingetty/actions.py
new file mode 100644
index 00000000..1e931169
--- /dev/null
+++ b/system/base/mingetty/actions.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+WorkDir = "mingetty-1.08"
+
+def build():
+ autotools.make('RPM_OPT_FLAGS="%s"' % get.CFLAGS())
+
+def install():
+ pisitools.dosbin("mingetty", "/sbin")
+ pisitools.doman("mingetty.8")
+ #pisitools.insinto("/usr/share/locale/tr/LC_MESSAGES", "tr.mo")
+
+ pisitools.dodoc("COPYING")
\ No newline at end of file
diff --git a/system/base/mingetty/files/tr.patch b/system/base/mingetty/files/tr.patch
new file mode 100644
index 00000000..97f75156
--- /dev/null
+++ b/system/base/mingetty/files/tr.patch
@@ -0,0 +1,90 @@
+--- /dev/null 2008-02-01 00:10:37.830034222 +0200
++++ tr.po 2008-01-31 22:50:29.000000000 +0200
+@@ -0,0 +1,87 @@
++# translation of tr.po to
++# translation of mingetty.po to
++# Copyright (C) 2008
++# This file is distributed under the same license as the mingetty package.
++#
++# Ozan Çağlayan , 2008.
++msgid ""
++msgstr ""
++"Project-Id-Version: tr\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2008-01-31 16:02+0200\n"
++"PO-Revision-Date: 2008-01-31 22:45+0200\n"
++"Last-Translator: Ozan Çağlayan \n"
++"Language-Team: \n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"X-Generator: KBabel 1.11.4\n"
++
++#: mingetty.c:343 mingetty.c:359
++#, c-format
++msgid "%s: cannot open tty: %s"
++msgstr "%s: terminal açılamıyor: %s"
++
++#: mingetty.c:345
++#, c-format
++msgid "%s: not a tty"
++msgstr "%s: terminal değil"
++
++#: mingetty.c:349
++#, c-format
++msgid "%s: vhangup() failed"
++msgstr "%s: vhangup() çağrısı başarısız"
++
++#: mingetty.c:361
++#, c-format
++msgid "%s: cannot get controlling tty: %s"
++msgstr "%s: denetleyici terminal açılamıyor: %s"
++
++#: mingetty.c:363
++#, c-format
++msgid "%s: cannot set process group: %s"
++msgstr "%s : süreç grubu ayarlanamıyor: %s"
++
++#: mingetty.c:367 mingetty.c:369 mingetty.c:371
++#, c-format
++msgid "%s: dup problem: %s"
++msgstr "%s: dup problemi: %s"
++
++#: mingetty.c:494 mingetty.c:703
++msgid " login: "
++msgstr "kullanıcı adı: "
++
++#: mingetty.c:545 mingetty.c:572
++#, c-format
++msgid "%s: invalid character 0x%x in login name"
++msgstr "%s: kullanıcı adında geçersiz karakter 0x%x"
++
++#: mingetty.c:548
++#, c-format
++msgid "%s: too long login name"
++msgstr "%s: kullanıcı adı çok uzun"
++
++#: mingetty.c:564
++#, c-format
++msgid "%s: invalid character conversion for login name"
++msgstr "%s: kullanıcı adı için geçersiz karakter dönüşümü"
++
++#: mingetty.c:580
++#, c-format
++msgid ""
++"%s: usage: '%s [--noclear] [--nonewline] [--noissue] [--nohangup] [--"
++"noreset] [--no-hostname] [--long-hostname] [--login program] [--logopts "
++"\"loginprg opts\"] [--nice 10] [--delay 10] [--chdir /home] [--chroot /"
++"chroot] [--autologin user] [--old] tty [term]' with e.g. tty=tty1"
++msgstr ""
++
++#: mingetty.c:703
++#, c-format
++msgid "%s%s (automatic login)\n"
++msgstr "%s%s (otomatik giriş)\n"
++
++#: mingetty.c:727
++#, c-format
++msgid "%s: can't exec %s: %s"
++msgstr "%s: %s çalıştırılamıyor: %s"
++
diff --git a/system/base/mingetty/pspec.xml b/system/base/mingetty/pspec.xml
new file mode 100644
index 00000000..8b8bccd6
--- /dev/null
+++ b/system/base/mingetty/pspec.xml
@@ -0,0 +1,67 @@
+
+
+
+
+ mingetty
+ ftp://ftp.suse.com/pub/projects/init/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv2
+ app:console
+ A compact getty program for virtual consoles only
+ mingetty, is a lightweight, minimalist getty for use on virtual consoles only.
+ http://sourceforge.net/projects/mingetty/files/mingetty/1.08/mingetty-1.08.tar.gz
+
+ gettext
+
+
+
+ tr.patch
+
+
+
+
+
+
+
+
+
+
+ mingetty
+
+ glibc
+
+
+ /sbin
+ /usr/share/locale
+ /usr/share/man
+ /usr/share/doc
+
+
+
+
+
+ 2014-05-11
+ 1.0.8
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-02-09
+ 1.0.8
+ Rebuild
+ Kamil Atlı
+ suvarice@gmail.com
+
+
+ 2012-08-23
+ 1.0.8
+ First release
+ PisiLinux Community
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/mingetty/tr-dil-yamasi oluşmadı b/system/base/mingetty/tr-dil-yamasi oluşmadı
new file mode 100644
index 00000000..8d1c8b69
--- /dev/null
+++ b/system/base/mingetty/tr-dil-yamasi oluşmadı
@@ -0,0 +1 @@
+
diff --git a/system/base/mingetty/translations.xml b/system/base/mingetty/translations.xml
new file mode 100644
index 00000000..61696d92
--- /dev/null
+++ b/system/base/mingetty/translations.xml
@@ -0,0 +1,9 @@
+
+
+
+ mingetty
+ Sadece sanal konsollar için yekpare bir getty programı
+ mingetty yalnızca sanal konsollar için tasarlanmış basit ve yalın getty uygulamasıdır.
+ mingetty, est getty poids plume minimaliste à utiliser exclusivement sur les consoles virtuelles.
+
+
diff --git a/system/base/miscfiles/actions.py b/system/base/miscfiles/actions.py
new file mode 100644
index 00000000..69af38a9
--- /dev/null
+++ b/system/base/miscfiles/actions.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+dirs = ("dict", "rfc")
+
+def setup():
+ autotools.configure("--datadir=/usr/share/misc")
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+ for d in dirs:
+ pisitools.dodir("/usr/share/%s" % d)
+ for line in tuple(open("Makefile.am", 'r')):
+ if line.startswith(d):
+ for f in line.strip().split("=")[1][1:].split(" "):
+ pisitools.domove("/usr/share/misc/%s" % f, "/usr/share/%s/" % d)
+
+ pisitools.dodoc("GNU*", "NEWS", "ORIGIN", "README", "dict-README")
diff --git a/system/base/miscfiles/pspec.xml b/system/base/miscfiles/pspec.xml
new file mode 100644
index 00000000..2841104b
--- /dev/null
+++ b/system/base/miscfiles/pspec.xml
@@ -0,0 +1,51 @@
+
+
+
+
+ miscfiles
+ http://freshmeat.net/projects/miscfiles/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv2
+ data
+ Miscellaneous files
+ miscfiles is a collection of data files for freely available information, like airport, country, currencies, city information, and codes. It also includes the Unicode character database.
+ http://ftp.gnu.org/gnu/miscfiles/miscfiles-1.5.tar.gz
+
+
+
+ miscfiles
+
+ /usr/share/doc
+ /usr/share/rfc
+ /usr/share/dict
+ /usr/share/misc
+
+
+
+
+
+ 2014-05-11
+ 1.5
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-10-30
+ 1.5
+ Rebuild
+ Yusuf Aydemir
+ yusuf.aydemir@pisilinux.org
+
+
+ 2012-11-24
+ 1.5
+ First release
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+
diff --git a/system/base/miscfiles/translations.xml b/system/base/miscfiles/translations.xml
new file mode 100644
index 00000000..0b5d53c4
--- /dev/null
+++ b/system/base/miscfiles/translations.xml
@@ -0,0 +1,10 @@
+
+
+
+ miscfiles
+ Çeşitli dosyalar
+ Fichiers divers.
+ Verschiedene Dateien
+ miscfiles havalanı, ülke, para birimi, şehir bilgisi ve kodları gibi bir çok ulaşılabilir bilgiyi veri dosyaları halinde tutmaktadır.
+
+
diff --git a/system/base/mkinitramfs/actions.py b/system/base/mkinitramfs/actions.py
new file mode 100644
index 00000000..7223540b
--- /dev/null
+++ b/system/base/mkinitramfs/actions.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+
+
+WorkDir = "./"
+
+def setup():
+ shelltools.move("README.mkinitramfs", "README")
+
+def install():
+ pisitools.dodir("/etc/initramfs.d")
+ pisitools.dodoc("README")
+
diff --git a/system/base/mkinitramfs/comar/pakhandler.py b/system/base/mkinitramfs/comar/pakhandler.py
new file mode 100644
index 00000000..39a202f9
--- /dev/null
+++ b/system/base/mkinitramfs/comar/pakhandler.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+import os
+import piksemel
+import subprocess
+
+def generate_initramfs(filepath):
+ patterns = ("lib/initramfs", "boot/kernel", "bin/busybox")
+ doc = piksemel.parse(filepath)
+ for item in doc.tags("File"):
+ path = item.getTagData("Path")
+ if path.startswith(patterns):
+ for kernel in os.listdir("/etc/kernel"):
+ subprocess.call(["/sbin/mkinitramfs", "--type", kernel])
+ return
+
+def setupPackage(metapath, filepath):
+ generate_initramfs(filepath)
+
+def cleanupPackage(metapath, filepath):
+ pass
+
+def postCleanupPackage(metapath, filepath):
+ generate_initramfs(filepath)
diff --git a/system/base/mkinitramfs/files/hotplug b/system/base/mkinitramfs/files/hotplug
new file mode 100644
index 00000000..6168aec4
--- /dev/null
+++ b/system/base/mkinitramfs/files/hotplug
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# Simple script to handle uevents
+#
+
+if [ "$SUBSYSTEM/$ACTION" == "firmware/add" ]; then
+ [ -e "/sys$DEVPATH/loading" ] || exit 1
+ DIR=/lib/firmware
+ [ -e "$DIR/$FIRMWARE" ] || exit 1
+ echo 1 > /sys$DEVPATH/loading
+ cat "$DIR/$FIRMWARE" > /sys$DEVPATH/data
+ echo 0 > /sys$DEVPATH/loading
+ exit 0
+fi
diff --git a/system/base/mkinitramfs/files/init b/system/base/mkinitramfs/files/init
new file mode 100644
index 00000000..8345cde5
--- /dev/null
+++ b/system/base/mkinitramfs/files/init
@@ -0,0 +1,593 @@
+#!/bin/sh
+#
+# Simple init script that should handle both
+# livecd/livedisk, thinclient and hdd boot
+#
+
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+INITRAMFSCONF="/etc/initramfs.conf"
+
+ROOT_LINKS="bin sbin lib boot usr opt"
+ROOT_TREES="etc root home var run"
+TMPFS_DIRS="dev mnt mnt/cdrom mnt/livecd mnt/thin tmp sys proc media"
+LOOPBACKFILE="/boot/pisi.sqfs"
+
+NORESUME=0
+LIVE=0
+NFSROOT=0
+QUIET=0
+RAID_INCREMENTAL=1
+RAID=0
+LVM=0
+COPYTORAM=0
+SPLASH=0
+WIPEMEM=0
+
+HOTPLUG="/sbin/hotplug"
+
+MNTDIR=""
+FS_TYPE=""
+INITRAMFS=""
+ROOT_FLAGS=""
+ROOT_DEVICE=""
+ROOT_TARGET=""
+RESUME_DEVICE=""
+WIPEMEM_OPTS="-llv"
+
+###########################
+# Miscellaneous functions #
+###########################
+
+info() {
+ echo "<6>initramfs: $1" > /dev/kmsg
+}
+
+log_output() {
+ $@ | echo "<6>`sed 's#^\(.*\)$#initramfs:\1#g'`" > /dev/kmsg
+}
+
+fall2sh() {
+ # Kill any possible plymouth instances
+ test -x /bin/plymouth && /bin/plymouth quit &> /dev/null
+ kill -9 $(pidof plymouthd) &> /dev/null
+
+ echo "--> $*"
+ echo "Reboot with initramfs=shell(noprobe) to further debug the issue."
+
+ # Use a login shell for sourcing /etc/profile
+ /bin/sh -l
+}
+
+run_dhcpc() {
+ udhcpc -C -i eth0 -s /etc/udhcpc.script
+}
+
+##################
+# Device probers #
+##################
+
+probe_devices() {
+ # Set hotplug helper for firmware loading
+ echo $HOTPLUG > /proc/sys/kernel/hotplug
+
+ if [ "x$1" = "x--with-kms" ]; then
+ probe_kms
+ test -x /bin/plymouth && /bin/plymouth show-splash
+ fi
+
+ probe_pci_devices
+ probe_virtio_devices
+ probe_usb_devices
+
+ # Unset hotplug helper
+ echo > /proc/sys/kernel/hotplug
+
+ [ "${RAID}" -eq "1" ] && probe_raid
+ [ "${LVM}" -eq "1" ] && probe_lvm
+}
+
+probe_kms() {
+ for device in /sys/bus/pci/devices/*/boot_vga; do
+ [ -f $device ] || continue
+ info "Loading KMS driver"
+ grep -q 1 $device && modprobe -bq `cat ${device%boot_vga}modalias`
+ done
+ if [ ! -c /dev/fb0 ]; then
+ echo "options uvesafb scroll=ywrap mtrr=0 nocrtc=1 mode_option=1024x768-32" > /etc/modprobe.d/uvesafb.conf
+ modprobe -bq uvesafb
+ fi
+}
+
+probe_pci_devices() {
+ info "Probing PCI devices"
+ local MODULES=""
+ for module in /sys/bus/pci/devices/*/modalias; do
+ [ -f $module ] || continue
+ MODULES="$MODULES $(cat $module)"
+ done
+ modprobe -bqa $MODULES
+}
+
+probe_usb_devices() {
+ info "Probing USB devices"
+ local MODULES=""
+ for module in /sys/bus/usb/devices/*/modalias; do
+ [ -f $module ] || continue
+ MODULES="$MODULES $(cat $module)"
+ done
+ modprobe -bqa $MODULES
+}
+
+probe_raid() {
+ info "Probing RAID devices"
+ modprobe -bqa dm-mod raid0 raid1 raid10 raid456
+ if [ -x /sbin/mdadm ]
+ then
+ /sbin/mdadm --examine --scan > /etc/mdadm.conf
+ /sbin/mdadm -As
+ fi
+}
+
+probe_lvm() {
+ info "Probing LVM devices"
+ modprobe -qa dm-mod
+ if [ -x /sbin/lvm ]
+ then
+ /sbin/lvm vgscan --ignorelockingfailure &> /dev/null
+ /sbin/lvm vgchange -ay --sysinit --ignorelockingfailure &> /dev/null
+ /sbin/lvm vgmknodes --ignorelockingfailure &> /dev/null
+ fi
+}
+probe_virtio_devices() {
+ local MODULES=""
+ for module in /sys/bus/virtio/devices/*/modalias; do
+ [ -f $module ] || continue
+ MODULES="$MODULES $(cat $module)"
+ done
+ modprobe -bqa $MODULES
+}
+
+#################################
+# Filesystem specific functions #
+#################################
+
+mount_rootfs() {
+ FS_TYPE=`disktype $ROOT_DEVICE | grep KERNELMODULE | awk '{print $2}'`
+ info "Mounting rootfs: $ROOT_DEVICE ($FS_TYPE)"
+ mount -r -t $FS_TYPE -n ${ROOT_FLAGS} ${ROOT_DEVICE} /newroot
+}
+
+find_live_mount() {
+ if [ "$#" -gt "0" ]
+ then
+ for x in $*
+ do
+ # this is used for non Linux fs detection
+ FS_TYPE=`disktype $1 | grep KERNELMODULE | awk '{print $2}'`
+ if [ -n "$FS_TYPE" -a -f /lib/modules/*/$FS_TYPE.ko ]
+ then
+ modprobe $FS_TYPE 1> /dev/null 2>&1
+ fi
+
+ mount -r ${x} /newroot/mnt/cdrom > /dev/null 2>&1
+
+ if [ "$?" = "0" ]
+ then
+ # Check for cdroot image
+ if [ -e /newroot/mnt/cdrom/${LOOPBACKFILE} ]
+ then
+ ROOT_DEVICE="/newroot${x}"
+ if [ "$COPYTORAM" == "1" ]
+ then
+ info "Copying Live Media files to RAM"
+ mkdir /newroot/mnt/cdromtemp
+ cp -af /newroot/mnt/cdrom/* /newroot/mnt/cdromtemp/
+ umount /newroot/mnt/cdrom
+ rmdir /newroot/mnt/cdrom
+ mv /newroot/mnt/cdromtemp /newroot/mnt/cdrom
+ fi
+ break
+ else
+ umount /newroot/mnt/cdrom
+ fi
+ fi
+ done
+ fi
+}
+
+manage_tmpfs() {
+ mount -t tmpfs tmpfs /newroot
+
+ for d in ${TMPFS_DIRS}; do
+ mkdir -p "/newroot/${d}"
+ done
+}
+
+mount_nfs() {
+ FS_LOCATION='mnt/thin'
+
+ # Change directory to /newroot
+ cd /newroot
+
+ # FIXME: busybox mount does not load automatically
+ modprobe -q nfs
+
+ # mount nfs
+ if [ -z "/etc/udhcpc.info" ]
+ then
+ fall2sh "/etc/udhcpc.info not found"
+ fi
+
+ . /etc/udhcpc.info
+
+ if [ -z "${ROOTPATH}" ]
+ then
+ fall2sh "NFS rootpath not found"
+ fi
+
+ echo "Mounting NFS from $ROOTPATH"
+ mount -o tcp,nolock,ro $ROOTPATH /newroot/mnt/thin
+
+ if [ "$?" != '0' ]
+ then
+ fall2sh "Could not nfs root"
+ fi
+
+ # Create necessary links
+ for x in ${ROOT_LINKS}; do
+ ln -s "${FS_LOCATION}/${x}" "${x}"
+ done
+
+ if [ -e "${FS_LOCATION}/lib32" ]
+ then
+ ln -s "${FS_LOCATION}/lib32" "lib32"
+ fi
+
+ # We need this for x86_64
+ ln -s "${FS_LOCATION}/lib" "lib64"
+
+ chmod 1777 tmp
+ (cd /newroot/${FS_LOCATION}; cp -a ${ROOT_TREES} /newroot)
+
+ # Needed for ltspfs mechanism
+ echo "$IP $HOSTNAME" >> /newroot/etc/hosts
+}
+
+mount_cdroot() {
+ FS_LOCATION="mnt/livecd"
+
+ # Change directory to /newroot
+ cd /newroot
+
+ # These are not loaded automatically
+ modprobe -q squashfs
+
+ # Loop type squashfs
+ mount -t squashfs -o loop,ro /newroot/mnt/cdrom/${LOOPBACKFILE} /newroot/mnt/livecd
+
+ if [ "$?" != "0" ]
+ then
+ fall2sh "Could not mount root image"
+ fi
+
+ # Create necessary links
+ for x in ${ROOT_LINKS}; do
+ ln -s "${FS_LOCATION}/${x}" "${x}"
+ done
+
+ if [ -e "${FS_LOCATION}/lib32" ]
+ then
+ ln -s "${FS_LOCATION}/lib32" "lib32"
+ fi
+
+ # We need this for x86_64
+ ln -s "${FS_LOCATION}/lib" "lib64"
+
+ chmod 1777 tmp
+ (cd /newroot/${FS_LOCATION}; cp -a ${ROOT_TREES} /newroot)
+
+ # FIXME: the device list is taken from udev, we can't rely on sys entries since pluggable means different
+ # in kernel world. Suggestions that do not include this kind of regexp mania are welcome
+
+ # for userspace applications
+ REAL_ROOT_TYPE=`echo "${ROOT_DEVICE}" | sed -e 's/^\/newroot\/dev\///' | grep -qE '^sr[0-9]*|^hd[a-z]|^pcd[0-9]|^xvd*' && echo "optical" || echo "harddisk"`
+ echo "${REAL_ROOT_TYPE}" > /newroot/run/pisilinux/livemedia
+
+ # this is needed for yali
+ MNTDIR=`grep \/mnt\/cdrom\ /proc/mounts|sed 's/\/newroot//g'`
+ echo "$MNTDIR" >> /newroot/etc/fstab
+}
+
+##############################
+# Config and cmdline parsers #
+##############################
+
+# FIXME: maybe we should just source the file instead of parsing
+# also consider merging conf parser and cmdline parser
+parse_config() {
+ while read inputline;
+ do
+ case "${inputline}" in
+ raid=*)
+ RAID=$(echo $inputline|cut -f2- -d=)
+ ;;
+ lvm=*)
+ LVM=$(echo $inputline|cut -f2- -d=)
+ ;;
+ thin=*)
+ NFSROOT=$(echo $inputline|cut -f2- -d=)
+ ;;
+ root=*)
+ ROOT_TARGET=$(echo $inputline|cut -f2- -d=)
+ ;;
+ rootflags=*)
+ ROOT_FLAGS=$(echo $inputline|cut -f2- -d=)
+ ;;
+ liveroot=*)
+ # Installation or livecd, enable RAID by default
+ # to be able to read existing RAID installations
+ LIVE=1
+ RAID_INCREMENTAL=0
+ LIVEROOT=$(echo $inputline|cut -f2- -d=)
+ ;;
+ resume=*)
+ RESUME_DEVICE="${inputline#resume=}"
+ ;;
+ noresume)
+ NORESUME=1
+ ;;
+ copytoram)
+ COPYTORAM=1
+ ;;
+ wipemem)
+ WIPEMEM=1
+ ;;
+ wipememopts=*)
+ WIPEMEM=1
+ WIPEMEM_OPTS=$(echo $inputline|cut -f2- -d=)
+ ;;
+ splash)
+ SPLASH=1
+ ;;
+ init=*)
+ INIT="${inputline#INIT=}"
+ ;;
+ esac
+ done < $INITRAMFSCONF
+}
+
+parse_cmdline() {
+ for x in `cat /proc/cmdline`; do
+ case "${x}" in
+ [0123456Ss])
+ # Normalize 'S' to 's'
+ LEVEL=`echo ${x}|tr A-Z a-z`
+ ;;
+ mudur=*)
+ for m in `echo ${x}|cut -f2 -d=|sed 's/,/ /g'`; do
+ case "${m}" in
+ livecd)
+ LIVE=1
+ ;;
+ livedisk)
+ LIVE=1
+ ;;
+ raid)
+ RAID=1
+ ;;
+ lvm)
+ LVM=1
+ ;;
+ thin)
+ NFSROOT=1
+ ;;
+ esac
+ done
+ ;;
+ initramfs=*)
+ INITRAMFS=`echo ${x}|cut -f2- -d=`
+ ;;
+ root=*)
+ ROOT_TARGET=`echo ${x}|cut -f2- -d=`
+ ;;
+ rootflags=*)
+ ROOT_FLAGS="-o ${x#rootflags=}"
+ ;;
+ liveroot=*)
+ LIVE=1
+ LIVEROOT=$(echo ${x}|cut -f2- -d=)
+ ;;
+ resume=*)
+ RESUME_DEVICE="${x#resume=}"
+ ;;
+ noresume)
+ NORESUME=1
+ ;;
+ init=*)
+ INIT="${x#init=}"
+ ;;
+ copytoram)
+ COPYTORAM=1
+ ;;
+ wipemem)
+ WIPEMEM=1
+ ;;
+ wipememopts=*)
+ WIPEMEM=1
+ WIPEMEM_OPTS=$(echo $x|cut -f2- -d=)
+ ;;
+ splash)
+ SPLASH=1
+ ;;
+ single)
+ LEVEL="s"
+ ;;
+ quiet)
+ QUIET=1
+ ;;
+ blacklist=*)
+ modules=${x#blacklist=}
+ for module in ${modules//,/ }; do
+ echo "blacklist $module" >> /etc/modprobe.d/cmdline.conf
+ done
+ ;;
+ esac
+ done
+
+ if [ -f /etc/modprobe.d/cmdline.conf ]; then
+ cp /etc/modprobe.d/cmdline.conf /dev/.modprobe.initramfs.conf
+ fi
+}
+
+
+####################
+# init starts here #
+####################
+
+info "Starting init on initramfs"
+
+# Mount needed filesystems
+mount -n -t proc proc /proc
+mount -n -t sysfs sysfs /sys
+# Added to start udev properly
+#mkdir -m 0755 /run
+#mount -t tmpfs tmpfs /run
+
+# Prepare /dev (Needs kernel >= 2.6.32)
+mount -t devtmpfs devtmpfs /dev
+mkdir -m 0755 /dev/pts
+mount -t devpts -o gid=5,mode=620 devpts /dev/pts
+
+# First parse config file, then cmdline to allow overwriting internal config
+if [ -f "$INITRAMFSCONF" ]
+then
+ #. $INITRAMFSCONF
+ parse_config
+fi
+
+# Parse command line parameters
+parse_cmdline
+
+# Minimize printk log
+test "x$QUIET" = "x1" && echo "1" > /proc/sys/kernel/printk
+
+# Initialize plymouth daemon if found and splash is true
+# Don't even launch plymouthd if we're in single-user mode
+if [ "$LEVEL" != "s" -a "$SPLASH" = "1" -a -x /sbin/plymouthd ]; then
+ /sbin/plymouthd --attach-to-session
+fi
+
+# Handle initramfs= parameter
+if [ "${INITRAMFS}" == "shellnoprobe" ]
+then
+ fall2sh "Starting up a shell without probing"
+elif [ "${INITRAMFS}" == "shell" ]
+then
+ probe_devices --with-kms
+ fall2sh "Starting up a shell"
+fi
+
+if [ "${WIPEMEM}" = "1" ]
+then
+ info "Wiping out memory, system will be shutdown after completion"
+ sdmem ${WIPEMEM_OPTS}
+ poweroff -f
+fi
+
+# Probe devices
+probe_devices --with-kms
+
+if [ -x /usr/sbin/resume -a -b "$RESUME_DEVICE" -a "x$NORESUME" != "x1" ]
+then
+ if [ "x$SPLASH" == "x1" ]
+ then
+ SPLASHPARAM="-P splash=y"
+ else
+ SPLASHPARAM="-P splash=n"
+ fi
+ # FIXME: This will fail if resume= contains LABEL/UUID
+ info "Attempting to resume from hibernation"
+ /usr/sbin/resume $SPLASHPARAM $RESUME_DEVICE
+fi
+
+echo 0x0100 > /proc/sys/kernel/real-root-dev
+
+if [ "${LIVE}" -eq "1" ]
+then
+ ROOT_DEVICE=""
+ manage_tmpfs
+
+ # modprobe filesystems that are not in kernel, for live disks
+ modprobe -qa nls_cp857 nls_utf8 vfat
+
+ for i in `seq 50`
+ do
+ t=`findfs ${LIVEROOT} 2>/dev/null`
+ find_live_mount "$t"
+
+ if [ "${ROOT_DEVICE}" != "" ]
+ then
+ break
+ else
+ probe_devices
+ usleep 200000
+ fi
+ done
+
+ if [ "${ROOT_DEVICE}" == "" ]
+ then
+ fall2sh "Could not find mount media"
+ fi
+
+ mount_cdroot
+
+elif [ "${NFSROOT}" -eq "1" ]
+then
+ run_dhcpc
+ manage_tmpfs
+ mount_nfs
+
+ # set hostname for mudur
+ hostname $HOSTNAME
+
+else
+ # Wait until ROOT_DEVICE appears
+ for i in `seq 50`
+ do
+ # let findfs handle all conversion
+ ROOT_DEVICE=`findfs ${ROOT_TARGET} 2>/dev/null`
+
+ if [ ! -b "${ROOT_DEVICE}" ]
+ then
+ probe_devices
+ usleep 200000
+ else
+ break
+ fi
+ done
+ if [ ! -b "${ROOT_DEVICE}" ]
+ then
+ fall2sh "Could not find boot device"
+ else
+ mount_rootfs
+ fi
+fi
+
+[ "${INIT}" == "" ] && INIT="/sbin/init";
+
+# This stops /lib/udev/rules.d/65-md-incremental.rules from medling with mdraid sets.
+[ "${RAID_INCREMENTAL}" -eq "0" ] && touch /dev/.in_sysinit
+
+# Move mounts instead of umount/mount
+mount --move /dev /newroot/dev
+mount --move /proc /newroot/proc
+mount --move /sys /newroot/sys
+# Added to start udev properly
+#mount --move /run /newroot/run
+
+
+# And we start
+info "Switching to the real root"
+test -x /bin/plymouth && /bin/plymouth update-root-fs --new-root-dir=/newroot
+exec /bin/switch_root -c /dev/console /newroot ${INIT} ${LEVEL}
+
diff --git a/system/base/mkinitramfs/files/initramfs.conf b/system/base/mkinitramfs/files/initramfs.conf
new file mode 100644
index 00000000..5c9df8f9
--- /dev/null
+++ b/system/base/mkinitramfs/files/initramfs.conf
@@ -0,0 +1,29 @@
+#
+# this file is used to configure initramfs, lowercase is preferred
+#
+
+# Set to 1 to enable probing raid modules and
+# calling /sbin/mdadm if it exists
+# raid=1
+
+# Set to 1 to enable probing lvm modules and
+# calling /sbin/lvm if it exists
+# lvm=1
+
+# Set to 1 to mount rootfs over NFS
+# thin=0
+
+# Set root device
+# root=LABEL=MyPisiLinuxSystem
+
+# Set rootfs's mount flags
+# rootflags=acl,xattr
+
+# Set resume partition
+# resume=/dev/sdb5
+
+# Set to 1 to disable resuming
+# noresume=0
+
+# Set Live media label
+# liveroot=LABEL=PisiLiveImage
diff --git a/system/base/mkinitramfs/files/mkinitramfs b/system/base/mkinitramfs/files/mkinitramfs
new file mode 100644
index 00000000..adc54211
--- /dev/null
+++ b/system/base/mkinitramfs/files/mkinitramfs
@@ -0,0 +1,586 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# PisiLinux initramfs creator
+#
+
+import os
+import sys
+import glob
+import stat
+import shutil
+import tempfile
+import subprocess
+
+from optparse import OptionParser
+
+config = {"rootDir" : "/",
+ "tmpDir" : "",
+ "debug" : False,
+ "dryrun" : False,
+ "destDir" : "/boot",
+ "blackList" : ["pktcdvd", "floppy"],
+ "kernelType" : "kernel",
+ "initramfsConf" : "/etc/initramfs.conf",
+ "kernelVersion" : "",
+}
+
+def loadFile(_file):
+ try:
+ f = file(_file)
+ d = [a.lstrip().rstrip("\n") for a in f]
+ d = filter(lambda x: not (x.startswith("#") or x == ""), d)
+ f.close()
+ return d
+ except:
+ return []
+
+def writeFile(_file, data):
+ f = open(_file, "w")
+ f.write(data)
+ f.close()
+
+def mkdir(_dir):
+ os.makedirs(_dir)
+
+def dohardlink(destination, source):
+ os.link(destination, source)
+
+def dosymlink(destination, source):
+ os.symlink(destination, source)
+
+def mknod(nodfile, nodtype, major, minor, perms=0666):
+ # c for character b for block devices, mknod style
+ if nodtype == "c":
+ devtype = stat.S_IFCHR
+ else:
+ devtype = stat.S_IFBLK
+
+ os.mknod(nodfile, perms | devtype, os.makedev(major, minor))
+
+def copy(source, destination):
+ # First let's check for the target directory and create if
+ # it doesn't exist
+ destdir = os.path.dirname(destination)
+ if not os.path.isdir(destdir):
+ mkdir(destdir)
+
+ try:
+ shutil.copy2(source, destination)
+ except IOError:
+ printWarn("Could not find %s" % source)
+
+def touch(_file):
+ if os.path.exists(_file):
+ os.utime(_file, None)
+ else:
+ f = open(_file, 'w')
+ f.close()
+
+def capture(*cmd):
+ a = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ return a.communicate()
+
+def run(*cmd):
+ f = file("/dev/null", "w")
+ return subprocess.call(cmd, shell=True, stdout=f, stderr=f)
+
+def printFail(msg):
+ print "ERROR: %s" % msg
+
+ tempdir.cleanup()
+ sys.exit(1)
+
+def printWarn(msg):
+ print "WARNING: %s" % msg
+
+def setKernelVersion(Version=""):
+ if Version == "":
+ kver = "".join(loadFile("/etc/kernel/%s" % config["kernelType"]))
+ else:
+ kver = Version
+
+ # FIXME: we should do this an option and in a try/except
+ if kver == "":
+ print "could not find version of %s, autodetecting" % config["kernelType"]
+ kver = os.uname()[2]
+
+ config["kernelVersion"] = kver
+
+class BaseSystem:
+ def __init__(self):
+ self.kver = config["kernelVersion"]
+ self.tmpDir = config["tmpDir"]
+ self.baseDirs = ["bin", "sbin", "etc/initramfs.d", "dev", "dev/loop", "lib", "newroot", "proc", "sys"]
+
+ self.deviceNodes = {"null" : ["c", 1, 3],
+ "console" : ["c", 5, 1],
+ "tty" : ["c", 5, 0],
+ "tty0" : ["c", 4, 0],
+ "tty1" : ["c", 4, 1],
+ "ram0" : ["b", 1, 0],
+ "fb0" : ["c", 29, 0],
+ "urandom" : ["c", 1, 9],
+ "kmsg" : ["c", 1, 11],
+ }
+
+ self.baseFileList = {
+ "/bin/busybox" : "/bin/",
+ "/bin/busybox.links" : "/bin/",
+ "/usr/bin/disktype" : "/bin/",
+ "/usr/bin/sdmem" : "/bin/",
+ "/lib/initramfs/init" : "/",
+ "/lib/initramfs/hotplug" : "/sbin/",
+ "/lib/initramfs/udhcpc.script" : "/etc/",
+ "/lib/initramfs/profile.rc" : "/etc/profile",
+ }
+
+ self.modprobeBlacklistFileList = dict([(k,"/etc/modprobe.d") for k in glob.glob("/etc/modprobe.d/blacklist*conf")])
+
+ self.suspendFileList = {
+ "/etc/suspend.conf" : "/etc/",
+ "/usr/sbin/resume" : "/bin/",
+ }
+
+
+ def getNewRoot(self, dir):
+ cleandir = dir.lstrip("/")
+ return os.path.join(self.tmpDir, cleandir)
+
+ def createBaseDirectories(self):
+ for i in self.baseDirs:
+ mkdir(self.getNewRoot(i))
+
+ mkdir(self.getNewRoot("/lib/modules/%s" % self.kver))
+ mkdir(self.getNewRoot("/lib/firmware"))
+ mkdir(self.getNewRoot("/etc/modprobe.d"))
+
+ def copyBasefiles(self):
+ for i in self.baseFileList:
+ copy(i, self.getNewRoot(self.baseFileList[i]))
+
+ for i in ["/init", "/etc/udhcpc.script"]:
+ os.chmod(self.getNewRoot(i), 0755)
+
+ for i in ["ext2", "ext3", "ext4", "reiserfs", "xfs"]:
+ touch(self.getNewRoot("/bin/fsck.%s" % i))
+
+ writeFile(self.getNewRoot("/etc/fstab"), "none none none defaults 0 0")
+
+ def createConfig(self):
+ # FIXME: Parse config files and create a proper one by hand
+ configFileSource = config["initramfsConf"]
+ if os.path.exists(configFileSource):
+ copy(configFileSource, self.getNewRoot(configFileSource))
+
+ def createNodes(self):
+ for i in self.deviceNodes:
+ k = self.deviceNodes[i]
+ mknod(self.getNewRoot("dev/%s" % i), k[0], k[1], k[2])
+
+ for i in range(8):
+ mknod(self.getNewRoot("dev/loop/%i" % i), "b", 7, i)
+ dosymlink("loop/%i" % i, self.getNewRoot("dev/loop%i" % i))
+
+ def createBaseSymlinks(self):
+ for i in loadFile(self.getNewRoot("/bin/busybox.links")):
+ # FIXME: python dosym does not play nice with cpio, it creates 120MB initramfs
+ # dosymlink("busybox", self.getNewRoot("/bin/%s" % i.split("/")[-1]))
+ dohardlink(self.getNewRoot("/bin/busybox"), self.getNewRoot("/bin/%s" % i.split("/")[-1]))
+
+ # FIXME: maybe we should symlink sbin to bin
+ dohardlink(self.getNewRoot("/bin/busybox"), self.getNewRoot("/sbin/modprobe"))
+
+ def addRaid(self):
+ mdadmFile = "/sbin/mdadm.static"
+ if os.path.exists(mdadmFile):
+ copy(mdadmFile, self.getNewRoot(mdadmFile.replace(".static", "")))
+
+ def addLvm(self):
+ lvmFile = "/sbin/lvm.static"
+ if os.path.exists(lvmFile):
+ copy(lvmFile, self.getNewRoot(lvmFile.replace(".static", "")))
+
+ def addSuspend(self):
+ for i in self.suspendFileList:
+ copy(i, self.getNewRoot(self.suspendFileList[i]))
+
+ def addModprobeBlacklists(self):
+ for i in self.modprobeBlacklistFileList:
+ copy(i, self.getNewRoot(self.modprobeBlacklistFileList[i]))
+
+ def create(self):
+ self.createBaseDirectories()
+ self.copyBasefiles()
+ self.createNodes()
+ self.createBaseSymlinks()
+ self.createConfig()
+ self.addRaid()
+ self.addLvm()
+ self.addSuspend()
+ self.addModprobeBlacklists()
+
+class KernelModule:
+ def __init__(self):
+ self.modulesList = []
+ self.allModules = []
+ self.blackList = config["blackList"]
+ self.kernelVersion = config["kernelVersion"]
+
+ self.targetDir = config["tmpDir"]
+ self.rootDir = config["rootDir"]
+ self.modulesDir = os.path.join(self.rootDir, "lib/modules/%s" % self.kernelVersion)
+ self.firmwareDir = os.path.join(self.rootDir, "lib/firmware")
+
+ self.addNetworkModule = config["networkModule"]
+ self.addNetworkModuleBasic = config["networkModuleBasic"]
+
+ self.addDRMModules = not config["excludeDRM"]
+ self.findAllModules()
+
+ self.scsiDirs = ["kernel/drivers/scsi"]
+ self.scsiModules = ["mptfc", "mptsas", "mptscsih", "mptspi", "zfcp"]
+
+ self.mdDirs = ["kernel/drivers/md"]
+ self.ataDirs = ["kernel/drivers/ata"]
+ self.mmcDirs = ["kernel/drivers/mmc"]
+ self.ideDirs = ["kernel/drivers/ide"]
+ self.blockDirs = ["kernel/drivers/block"]
+
+ self.firewireModules = ["firewire-ohci", "firewire-sbp2", "firewire-net", "firewire-core"]
+ self.i2oModules = ["i2o_block"]
+ self.usbModules = ["usb-storage", "sd_mod", "usbcore", "ehci-hcd", "ohci-hcd", "uhci-hcd"]
+
+ self.filesystemModules = ["ext2", "ext3", "ext4", "reiser4", "jfs", "reiserfs", "xfs", "vfat", "fat", "ntfs", "unionfs", "cramfs", "nfs", "nls_utf8", "nls_iso8859_9", "nls_cp857", "nls_iso8859-1", "nls_ascii", "nls_cp850", "squashfs"]
+
+ self.networkBaseModules = ["af_packet", "mii", "8390", "via-rhine", "8139too", "ne2k-pci", "e100", "sky2", "tg3", "skge"]
+ self.networkDirs = ["kernel/drivers/net"]
+
+ self.drmDir = "kernel/drivers/gpu/drm"
+
+ self.virtioModules = ["virtio", "virtio_balloon", "virtio_blk", "virtio_net", "virtio_pci"]
+ self.xenModules = ["xenblk", "xenfb", "gntdev", "xennet", "xenkbd"]
+
+
+ def tidyModuleList(self):
+ ml = list(set(self.modulesList))
+ ml.sort()
+ self.modulesList = ml
+
+ def depmod(self, targetdir):
+ cmd = "/sbin/depmod -a -b %s -F %s/System.map %s"
+ capture(cmd % (targetdir, self.modulesDir, self.kernelVersion))
+
+ def installModules(self):
+ for i in self.modulesList:
+ if os.path.basename(i).replace(".ko", "") not in self.blackList:
+ copy(i, os.path.join(self.targetDir, self.modulesDir.replace(self.rootDir, "/").lstrip("/")))
+
+ def findAllModules(self):
+ foundModules = []
+
+ if not os.path.exists(self.modulesDir):
+ printFail("There is no %s, please check your kernel version" % self.modulesDir)
+
+ for root, directory, files in os.walk(self.modulesDir):
+ for name in files:
+ if name.endswith(".ko"):
+ foundModules.append(os.path.join(root, name))
+
+ self.allModules = foundModules
+
+ def findModuleDeps(self):
+ deps = []
+ depdata = loadFile(os.path.join(self.modulesDir, "modules.dep"))
+
+ for line in depdata:
+ for i in self.modulesList:
+ if "%s:" % i.replace("%s/" % self.modulesDir, "") in line:
+ deps.extend(line.split(":")[1].strip().split(" "))
+
+ # return [os.path.join(self.modulesDir, x) for x in deps if not x == ""]
+ self.modulesList.extend([os.path.join(self.modulesDir, x) for x in deps if not x == ""])
+
+ def appendFirmwares(self):
+ ret = capture("/sbin/modinfo -F firmware %s/*.ko" % os.path.join(self.targetDir, self.modulesDir.replace(self.rootDir, "/").lstrip("/")))[0]
+ fwlist = ret.strip("\n").split("\n")
+
+ targetbase = os.path.join(self.targetDir, "lib/firmware")
+
+ for i in fwlist:
+ src = os.path.join(self.firmwareDir, i)
+ target = os.path.join(targetbase, os.path.dirname(i))
+
+ if os.path.exists(src):
+ if not os.path.exists(target):
+ mkdir(target)
+
+ copy(src, target)
+
+ else:
+ printWarn("Could not find firmware %s" % src)
+ pass
+
+ def updateModuleDependencies(self, force=False):
+ # this is here to prevent a race condition with pakhandler, when installing a system from scratch
+ if force or not os.path.exists("%s/modules.dep" % self.modulesDir):
+ printWarn("Could not find module dependencies in %s, running depmod for system" % self.modulesDir)
+ self.depmod(self.rootDir)
+
+ def addDir(self, mdir):
+ newModules = []
+ dirtoadd = os.path.join(self.modulesDir, mdir)
+
+ for line in self.allModules:
+ if line.startswith(dirtoadd):
+ newModules.append(line)
+
+ self.modulesList.extend(newModules)
+
+ def addModule(self, module):
+ if module.endswith(".ko"):
+ module = module[:-3]
+
+ for line in self.allModules:
+ # FIXME: I still don't trust the _ versus - case, try to be sure of it in kernel
+ if line.replace("-", "_").endswith("/%s.ko" % module.replace("-", "_")):
+ self.modulesList.append(line)
+ return
+
+ def addScsi(self):
+ for i in self.scsiDirs:
+ self.addDir(i)
+
+ for i in self.scsiModules:
+ self.addModule(i)
+
+ def addAta(self):
+ for i in self.ataDirs:
+ self.addDir(i)
+
+ def addMmc(self):
+ for i in self.mmcDirs:
+ self.addDir(i)
+
+ def addBlock(self):
+ for i in self.blockDirs:
+ self.addDir(i)
+
+ def addIde(self):
+ for i in self.ideDirs:
+ self.addDir(i)
+
+ def addNetwork(self):
+ if self.addNetworkModule:
+ for i in self.networkDirs:
+ self.addDir(i)
+
+ if self.addNetworkModuleBasic:
+ for i in self.networkBaseModules:
+ self.addModule(i)
+
+ def addDRM(self):
+ if self.addDRMModules:
+ for i in glob.glob("%s/*/*.ko" % os.path.join(self.modulesDir, self.drmDir)):
+ # Check for drm_crtc_init symbol
+ if not os.system("grep -qw drm_crtc_init %s" % i):
+ self.addModule(i.partition(self.modulesDir+'/')[-1])
+
+ # Add uvesafb as a fallback
+ if os.path.exists("/sbin/v86d"):
+ copy("/sbin/v86d", os.path.join(self.targetDir, "sbin/"))
+ self.addModule("kernel/drivers/video/uvesafb.ko")
+
+ def addMd(self):
+ for i in self.mdDirs:
+ self.addDir(i)
+
+ def addFirewire(self):
+ for i in self.firewireModules:
+ self.addModule(i)
+
+ def addI2o(self):
+ for i in self.i2oModules:
+ self.addModule(i)
+
+ def addUsb(self):
+ for i in self.usbModules:
+ self.addModule(i)
+
+ def addFilesystem(self):
+ for i in self.filesystemModules:
+ self.addModule(i)
+
+ def addVirtio(self):
+ for i in self.virtioModules:
+ self.addModule(i)
+
+ def addXen(self):
+ for i in self.xenModules:
+ self.addModule(i)
+
+ def addGeneric(self):
+ self.addScsi()
+ self.addAta()
+ self.addMmc()
+ self.addBlock()
+ self.addIde()
+ self.addNetwork()
+ self.addMd()
+ self.addFirewire()
+ self.addI2o()
+ self.addUsb()
+ self.addFilesystem()
+ self.addVirtio()
+ self.addDRM()
+
+ def autoGenerate(self):
+ self.updateModuleDependencies()
+ self.addGeneric()
+ self.findModuleDeps()
+ self.tidyModuleList()
+ self.installModules()
+ self.appendFirmwares()
+ self.depmod(self.targetDir)
+
+class Plymouth:
+ def __init__(self):
+ self.fileList = "/lib/initramfs/plymouth.list"
+ self.targetDir = config["tmpDir"]
+ self.theme = "pisilinux"
+ self.themeDir = "/usr/share/plymouth/themes"
+
+ def install_current_theme(self):
+ self.theme = os.popen("plymouth-set-default-theme").read().strip()
+ if os.path.exists("%s/%s" % (self.themeDir, self.theme)):
+ for themeFile in glob.glob("%s/%s/*" % (self.themeDir, self.theme)):
+ copy(themeFile, os.path.join(self.targetDir, themeFile[1:]))
+
+ def install(self):
+ """Will install plymouth related base stuff."""
+ if os.path.exists(self.fileList):
+ with open(self.fileList, "r") as files:
+ for _file in files:
+ filename = _file.strip()
+ copy(filename.strip(), os.path.join(self.targetDir, filename[1:]))
+
+ self.install_current_theme()
+
+class Initramfs:
+ def __init__(self):
+ self.destDir = config["destDir"]
+ self.sourceDir = config["tmpDir"]
+ self.initramfs = "initramfs-%s" % config["kernelVersion"]
+
+ def create(self):
+ if not os.path.exists(self.destDir):
+ mkdir(self.destDir)
+
+ cmd = "(cd %s && find . | cpio --quiet --dereference -o -H newc | gzip -6 > %s)"
+ capture(cmd % (self.sourceDir, os.path.join(self.destDir, self.initramfs)))
+
+class Tempdir:
+ def __init__(self):
+ self.tmpDir = ""
+ self.keepTmp = False
+
+ def create(self):
+ self.tmpDir = tempfile.mkdtemp(prefix="mkinitramfs-")
+
+ def cleanup(self):
+ if self.keepTmp:
+ printWarn("Keeping temporary directory %s" % self.tmpDir)
+ else:
+ shutil.rmtree(self.tmpDir)
+
+
+if __name__ == "__main__":
+ tempdir = Tempdir()
+ tempdir.create()
+ config["tmpDir"] = tempdir.tmpDir
+
+ parser = OptionParser()
+ parser.add_option("-k", "--kernel", dest="kernelVersion", type="string",
+ help="kernel version to create initramfs for")
+
+ parser.add_option("-t", "--type", dest="type", type="string", default="kernel",
+ help="kernel type to create initramfs for")
+
+ parser.add_option("-o", "--output", dest="destDir", type="string", metavar="DIR", default="/boot",
+ help="create initramfs in DIR")
+
+ parser.add_option("-c", "--configfile", dest="configFile", type="string", metavar="FILE", default="/etc/initramfs.conf",
+ help="use FILE for initramfs config file, default is /etc/initramfs.conf")
+
+ parser.add_option("-r", "--rootdir", dest="rootDir", type="string", metavar="DIR", default="/",
+ help="use DIR as basedir for kernel modules")
+
+ parser.add_option("-f", "--filename", dest="filename", type="string", metavar="FILE",
+ help="use FILE for initramfs file name")
+
+ parser.add_option("-d", "--debug", action="store_true", dest="debug", default=False,
+ help="print extra debug info")
+
+ parser.add_option("--blacklist", dest="blackList", type="string", metavar="FILES", default="",
+ help="define modules to be blacklisted, seperated by comma. Example: e100,rtl819,ahci")
+
+ parser.add_option("--network", action="store_true", dest="networkModule", default=False,
+ help="add network modules")
+
+ parser.add_option("--nodrm", action="store_true", dest="excludeDRM", default=False,
+ help="Don't include KMS capable DRM modules")
+
+ parser.add_option("--network-generic", action="store_true", dest="networkModuleBasic", default=False,
+ help="add only generic network modules")
+
+ parser.add_option("--keeptmp", action="store_true", dest="keepTmp", default=False,
+ help="whether to keep temporary dir after operation")
+
+ parser.add_option("-n", "--dry-run", action="store_true", dest="dryrun", default=False,
+ help="do not perform any action, just show what will be done")
+
+ parser.add_option("--list-modules", action="store_true", dest="listModules", default=False,
+ help="do not perform any action, just show what will be done")
+
+ parser.add_option("--list-base", action="store_true", dest="listBase", default=False,
+ help="do not perform any action, just show what will be done")
+
+ (opts, args) = parser.parse_args()
+
+ config["initramfsConf"] = opts.configFile
+
+ config["destDir"] = os.path.abspath(opts.destDir)
+ config["rootDir"] = os.path.abspath(opts.rootDir)
+
+ config["debug"] = opts.debug
+ config["dryrun"] = opts.dryrun
+ tempdir.keepTmp = opts.keepTmp
+
+ config["kernelType"] = opts.type
+ config["networkModule"] = opts.networkModule
+ config["networkModuleBasic"] = opts.networkModuleBasic
+ config["excludeDRM"] = opts.excludeDRM
+
+ if "," in opts.blackList:
+ config["blackList"].extend(opts.blackList.split(","))
+
+ if opts.kernelVersion:
+ config["kernelVersion"] = opts.kernelVersion
+ else:
+ setKernelVersion()
+
+ basesystem = BaseSystem()
+ basesystem.create()
+
+ # Check for plymouth and install if found
+ plymouth = Plymouth()
+ plymouth.install()
+
+ kernelmodule = KernelModule()
+ kernelmodule.autoGenerate()
+
+ initramfs = Initramfs()
+ initramfs.create()
+
+ tempdir.cleanup()
+
diff --git a/system/base/mkinitramfs/files/profile.rc b/system/base/mkinitramfs/files/profile.rc
new file mode 100644
index 00000000..64884402
--- /dev/null
+++ b/system/base/mkinitramfs/files/profile.rc
@@ -0,0 +1,6 @@
+# Simple profile file for sh
+
+alias ls='ls --color=auto'
+alias ll='ls --color -l'
+
+export PS1="\[\033[1;31m\]initramfs \[\033[1;34m\]\W # \[\033[00m\]"
diff --git a/system/base/mkinitramfs/files/udhcpc.script b/system/base/mkinitramfs/files/udhcpc.script
new file mode 100644
index 00000000..2fcc4d0b
--- /dev/null
+++ b/system/base/mkinitramfs/files/udhcpc.script
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+RESOLV_CONF="/etc/resolv.conf"
+
+UDHCPC_INFO="/etc/udhcpc.info"
+
+update_interface()
+{
+ [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
+ [ -n "$subnet" ] && NETMASK="netmask $subnet"
+ /bin/ifconfig $interface $ip $BROADCAST $NETMASK
+}
+
+update_routes()
+{
+ if [ -n "$router" ]
+ then
+ echo "deleting routes"
+ while /bin/route del default gw 0.0.0.0 dev $interface > /dev/null 2>&1
+ do :
+ done
+
+ for i in $router
+ do
+ /bin/route add default gw $i dev $interface
+ done
+ fi
+}
+
+update_dns()
+{
+ echo -n > $RESOLV_CONF
+ [ -n "$domain" ] && echo domain $domain >> $RESOLV_CONF
+ for i in $dns
+ do
+ echo adding dns $i
+ echo nameserver $i >> $RESOLV_CONF
+ done
+}
+
+deconfig()
+{
+ /bin/ifconfig $interface 0.0.0.0
+}
+
+update_udhcpc_info()
+{
+ cat > $UDHCPC_INFO <
+
+
+
+ mkinitramfs
+ http://www.busybox.net
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv2
+ app:console
+ A tool to create the initramfs image
+ mkinitramfs contains a tool to create the initramfs image with busybox.
+ http://source.pisilinux.org/1.0/README.mkinitramfs
+
+
+
+ mkinitramfs
+
+ disktype
+ busybox
+
+
+ /etc
+ /sbin
+ /lib/initramfs
+ /usr/share/doc/mkinitramfs
+
+
+ mkinitramfs
+ init
+ udhcpc.script
+ hotplug
+ profile.rc
+ initramfs.conf
+
+
+ System.PackageHandler
+
+
+
+
+
+ 2014-05-11
+ 1.0.7
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-05-10
+ 1.0.7
+ Fix probing LVM devices
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-09-10
+ 1.0.7
+ Disable mount tmpfs on /run
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-09-05
+ 1.0.7
+ Add missing method to pakhandler.py
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-09-03
+ 1.0.7
+ Fix default plymouth theme name.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-06-17
+ 1.0.7
+ Fix resume path.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-02-13
+ 1.0.7
+ Change loopbackimage address and name.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2013-01-13
+ 1.0.7
+ First release
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+
diff --git a/system/base/mkinitramfs/translations.xml b/system/base/mkinitramfs/translations.xml
new file mode 100644
index 00000000..23a58871
--- /dev/null
+++ b/system/base/mkinitramfs/translations.xml
@@ -0,0 +1,9 @@
+
+
+
+ mkinitramfs
+ initramfs image dosyası yaratmak için araç
+ initramfs image dosyası yaratmak için araç
+ Un outil pour créer les images initramfs
+
+
diff --git a/system/base/nano/actions.py b/system/base/nano/actions.py
new file mode 100644
index 00000000..49e400a3
--- /dev/null
+++ b/system/base/nano/actions.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def setup():
+ autotools.autoreconf("-fvi")
+ autotools.configure("--disable-rpath \
+ --enable-utf8 \
+ --enable-altrcname \
+ --disable-speller")
+
+def build():
+ autotools.make()
+
+def install():
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+
+ pisitools.insinto("/etc/", "doc/nanorc.sample", "nanorc")
+ pisitools.dosym("/usr/bin/nano", "/bin/nano")
+
+ pisitools.dohtml("doc/*.html")
+ pisitools.dodoc("ChangeLog*", "README", "doc/nanorc.sample", "AUTHORS", "NEWS", "TODO", "COPYING*", "THANKS", "UPGRADE")
diff --git a/system/base/nano/files/0001-nanorc-default-settings-changes.patch b/system/base/nano/files/0001-nanorc-default-settings-changes.patch
new file mode 100644
index 00000000..d72750a9
--- /dev/null
+++ b/system/base/nano/files/0001-nanorc-default-settings-changes.patch
@@ -0,0 +1,173 @@
+From ffb42bb0d87586adac14144b98333eb52808ce99 Mon Sep 17 00:00:00 2001
+From: Mehmet Emre Atasever
+Date: Sun, 26 Jun 2011 18:39:04 +0300
+Subject: [PATCH] nanorc default settings changes
+
+Some default settings are not so convenient for Pisi Linux nano users.
+
+also fixes bugs (#pb18483, #pb18484)
+---
+ doc/nanorc.sample.in | 64 +++++++++++++++++++++++++-------------------------
+ 1 files changed, 32 insertions(+), 32 deletions(-)
+
+diff --git a/doc/nanorc.sample.in b/doc/nanorc.sample.in
+index f164c26..24d3c7b 100644
+--- a/doc/nanorc.sample.in
++++ b/doc/nanorc.sample.in
+@@ -25,17 +25,17 @@
+ # set backupdir ""
+
+ ## Do backwards searches by default.
+-# set backwards
++set backwards
+
+ ## Use bold text instead of reverse video text.
+-# set boldtext
++set boldtext
+
+ ## The characters treated as closing brackets when justifying
+ ## paragraphs. They cannot contain blank characters. Only closing
+ ## punctuation, optionally followed by closing brackets, can end
+ ## sentences.
+ ##
+-# set brackets ""')>]}"
++set brackets ""')>]}"
+
+ ## Do case sensitive searches by default.
+ # set casesensitive
+@@ -60,7 +60,7 @@
+ ## searches. They cannot contain blank characters. The former set must
+ ## come before the latter set, and both must be in the same order.
+ ##
+-# set matchbrackets "(<[{)>]}"
++set matchbrackets "(<[{)>]}"
+
+ ## Use the blank line below the titlebar as extra editing space.
+ # set morespace
+@@ -139,7 +139,7 @@
+ # set smarthome
+
+ ## Use smooth scrolling as the default.
+-# set smooth
++set smooth
+
+ ## Enable soft line wrapping (AKA full line display).
+ # set softwrap
+@@ -153,7 +153,7 @@
+ # set suspend
+
+ ## Use this tab size instead of the default; it must be greater than 0.
+-# set tabsize 8
++set tabsize 4
+
+ ## Convert typed tabs to spaces.
+ # set tabstospaces
+@@ -234,79 +234,79 @@
+
+
+ ## Nanorc files
+-# include "@PKGDATADIR@/nanorc.nanorc"
++include "@PKGDATADIR@/nanorc.nanorc"
+
+ ## C/C++
+-# include "@PKGDATADIR@/c.nanorc"
++include "@PKGDATADIR@/c.nanorc"
+
+ ## Makefiles
+-# include "@PKGDATADIR@/makefile.nanorc"
++include "@PKGDATADIR@/makefile.nanorc"
+
+ ## Cascading Style Sheets
+-# include "@PKGDATADIR@/css.nanorc"
++include "@PKGDATADIR@/css.nanorc"
+
+ ## Debian files
+-# include "@PKGDATADIR@/debian.nanorc"
++include "@PKGDATADIR@/debian.nanorc"
+
+ ## Gentoo files
+-# include "@PKGDATADIR@/gentoo.nanorc"
++include "@PKGDATADIR@/gentoo.nanorc"
+
+ ## HTML
+-# include "@PKGDATADIR@/html.nanorc"
++include "@PKGDATADIR@/html.nanorc"
+
+ ## PHP
+-# include "@PKGDATADIR@/php.nanorc"
++include "@PKGDATADIR@/php.nanorc"
+
+ ## TCL
+-# include "@PKGDATADIR@/tcl.nanorc"
++include "@PKGDATADIR@/tcl.nanorc"
+
+ ## TeX
+-# include "@PKGDATADIR@/tex.nanorc"
++include "@PKGDATADIR@/tex.nanorc"
+
+ ## Quoted emails (under e.g. mutt)
+-# include "@PKGDATADIR@/mutt.nanorc"
++include "@PKGDATADIR@/mutt.nanorc"
+
+ ## Patch files
+-# include "@PKGDATADIR@/patch.nanorc"
++include "@PKGDATADIR@/patch.nanorc"
+
+ ## Manpages
+-# include "@PKGDATADIR@/man.nanorc"
++include "@PKGDATADIR@/man.nanorc"
+
+ ## Groff
+-# include "@PKGDATADIR@/groff.nanorc"
++include "@PKGDATADIR@/groff.nanorc"
+
+ ## Perl
+-# include "@PKGDATADIR@/perl.nanorc"
++include "@PKGDATADIR@/perl.nanorc"
+
+ ## Python
+-# include "@PKGDATADIR@/python.nanorc"
++include "@PKGDATADIR@/python.nanorc"
+
+ ## Ruby
+-# include "@PKGDATADIR@/ruby.nanorc"
++include "@PKGDATADIR@/ruby.nanorc"
+
+ ## Java
+-# include "@PKGDATADIR@/java.nanorc"
++include "@PKGDATADIR@/java.nanorc"
+
+ ## Fortran
+-# include "@PKGDATADIR@/fortran.nanorc"
++include "@PKGDATADIR@/fortran.nanorc"
+
+ ## Objective-C
+-# include "@PKGDATADIR@/objc.nanorc"
++include "@PKGDATADIR@/objc.nanorc"
+
+ ## OCaml
+-# include "@PKGDATADIR@/ocaml.nanorc"
++include "@PKGDATADIR@/ocaml.nanorc"
+
+ ## AWK
+-# include "@PKGDATADIR@/awk.nanorc"
++include "@PKGDATADIR@/awk.nanorc"
+
+ ## Assembler
+-# include "@PKGDATADIR@/asm.nanorc"
++include "@PKGDATADIR@/asm.nanorc"
+
+ ## Bourne shell scripts
+-# include "@PKGDATADIR@/sh.nanorc"
++include "@PKGDATADIR@/sh.nanorc"
+
+ ## POV-Ray
+-# include "@PKGDATADIR@/pov.nanorc"
++include "@PKGDATADIR@/pov.nanorc"
+
+ ## XML-type files
+-# include "@PKGDATADIR@/xml.nanorc"
++include "@PKGDATADIR@/xml.nanorc"
+--
+1.7.5.4
+
diff --git a/system/base/nano/files/fedora/0001-check-stat-s-result-and-avoid-calling-stat-on-a-NULL.patch b/system/base/nano/files/fedora/0001-check-stat-s-result-and-avoid-calling-stat-on-a-NULL.patch
new file mode 100644
index 00000000..739f6f5d
--- /dev/null
+++ b/system/base/nano/files/fedora/0001-check-stat-s-result-and-avoid-calling-stat-on-a-NULL.patch
@@ -0,0 +1,77 @@
+From fc87b0a32c130a2b3ab37e614d4a1c6c8e5d70e7 Mon Sep 17 00:00:00 2001
+From: Kamil Dudka
+Date: Thu, 19 Aug 2010 13:58:12 +0200
+Subject: [PATCH 1/2] check stat's result and avoid calling stat on a NULL pointer
+
+---
+ src/files.c | 33 +++++++++++++++++++++++++--------
+ 1 files changed, 25 insertions(+), 8 deletions(-)
+
+diff --git a/src/files.c b/src/files.c
+index f6efbf1..99cc1b8 100644
+--- a/src/files.c
++++ b/src/files.c
+@@ -103,6 +103,24 @@ void initialize_buffer_text(void)
+ openfile->totsize = 0;
+ }
+
++#ifndef NANO_TINY
++/* If *pstat is NULL, perform a stat call with the given file name. On success,
++ * *pstat points to a newly allocated buffer that contains the stat's result.
++ * On stat's failure, the NULL pointer in *pstat is left intact. */
++void stat_if_needed(const char *filename, struct stat **pstat)
++{
++ struct stat *tmp;
++ if (*pstat)
++ return;
++
++ tmp = (struct stat *)nmalloc(sizeof(struct stat));
++ if (0 == stat(filename, tmp))
++ *pstat = tmp;
++ else
++ free(tmp);
++}
++#endif
++
+ /* If it's not "", filename is a file to open. We make a new buffer, if
+ * necessary, and then open and read the file, if applicable. */
+ void open_buffer(const char *filename, bool undoable)
+@@ -148,11 +166,7 @@ void open_buffer(const char *filename, bool undoable)
+ if (rc > 0) {
+ read_file(f, rc, filename, undoable, new_buffer);
+ #ifndef NANO_TINY
+- if (openfile->current_stat == NULL) {
+- openfile->current_stat =
+- (struct stat *)nmalloc(sizeof(struct stat));
+- stat(filename, openfile->current_stat);
+- }
++ stat_if_needed(filename, &openfile->current_stat);
+ #endif
+ }
+
+@@ -1532,8 +1546,8 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
+ * specified it interactively), stat and save the value
+ * or else we will chase null pointers when we do
+ * modtime checks, preserve file times, etc. during backup */
+- if (openfile->current_stat == NULL && !tmp && realexists)
+- stat(realname, openfile->current_stat);
++ if (!tmp && realexists)
++ stat_if_needed(realname, &openfile->current_stat);
+
+ /* We backup only if the backup toggle is set, the file isn't
+ * temporary, and the file already exists. Furthermore, if we
+@@ -1924,7 +1938,10 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
+ if (openfile->current_stat == NULL)
+ openfile->current_stat =
+ (struct stat *)nmalloc(sizeof(struct stat));
+- stat(realname, openfile->current_stat);
++ if (stat(realname, openfile->current_stat)) {
++ free(openfile->current_stat);
++ openfile->current_stat = NULL;
++ }
+ #endif
+
+ statusbar(P_("Wrote %lu line", "Wrote %lu lines",
+--
+1.7.4
+
diff --git a/system/base/nano/files/fedora/0002-use-futimens-if-available-instead-of-utime.patch b/system/base/nano/files/fedora/0002-use-futimens-if-available-instead-of-utime.patch
new file mode 100644
index 00000000..d2a687fb
--- /dev/null
+++ b/system/base/nano/files/fedora/0002-use-futimens-if-available-instead-of-utime.patch
@@ -0,0 +1,128 @@
+From 23510b930ea31f7de8005e2f0ff6cab7062b4e26 Mon Sep 17 00:00:00 2001
+From: Kamil Dudka
+Date: Thu, 19 Aug 2010 15:23:06 +0200
+Subject: [PATCH 2/2] use futimens() if available, instead of utime()
+
+---
+ config.h.in | 3 +++
+ configure | 2 +-
+ configure.ac | 2 +-
+ src/files.c | 48 +++++++++++++++++++++++++++++++++++-------------
+ 4 files changed, 40 insertions(+), 15 deletions(-)
+
+diff --git a/config.h.in b/config.h.in
+index 52e13f1..cb17b29 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -64,6 +64,9 @@
+ /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+ #undef HAVE_DOPRNT
+
++/* Define to 1 if you have the `futimens' function. */
++#undef HAVE_FUTIMENS
++
+ /* Define to 1 if you have the `getdelim' function. */
+ #undef HAVE_GETDELIM
+
+diff --git a/configure b/configure
+index 02733c7..1805e53 100755
+--- a/configure
++++ b/configure
+@@ -7484,7 +7484,7 @@ fi
+
+
+
+-for ac_func in getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf
++for ac_func in futimens getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf
+ do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+diff --git a/configure.ac b/configure.ac
+index 66f8ee3..f4975d3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -415,7 +415,7 @@ fi])
+
+ dnl Checks for functions.
+
+-AC_CHECK_FUNCS(getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf)
++AC_CHECK_FUNCS(futimens getdelim getline isblank strcasecmp strcasestr strncasecmp strnlen vsnprintf)
+
+ if test x$enable_utf8 != xno; then
+ AC_CHECK_FUNCS(iswalnum iswblank iswpunct iswspace nl_langinfo mblen mbstowcs mbtowc wctomb wcwidth)
+diff --git a/src/files.c b/src/files.c
+index 99cc1b8..9a1bdcc 100644
+--- a/src/files.c
++++ b/src/files.c
+@@ -1455,6 +1455,29 @@ int copy_file(FILE *inn, FILE *out)
+ return retval;
+ }
+
++#ifdef HAVE_FUTIMENS
++/* set atime/mtime by file descriptor */
++int utime_wrap(int fd, const char *filename, struct utimbuf *ut)
++{
++ struct timespec times[2];
++ (void) filename;
++
++ times[0].tv_sec = ut->actime;
++ times[1].tv_sec = ut->modtime;
++ times[0].tv_nsec = 0L;
++ times[1].tv_nsec = 0L;
++
++ return futimens(fd, times);
++}
++#else
++/* set atime/mtime by file name */
++int utime_wrap(int fd, const char *filename, struct utimbuf *ut)
++{
++ (void) fd;
++ return utime(filename, ut);
++}
++#endif
++
+ /* Write a file out to disk. If f_open isn't NULL, we assume that it is
+ * a stream associated with the file, and we don't try to open it
+ * ourselves. If tmp is TRUE, we set the umask to disallow anyone else
+@@ -1694,6 +1717,18 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
+ fprintf(stderr, "Backing up %s to %s\n", realname, backupname);
+ #endif
+
++ /* Set backup's file metadata. */
++ if (utime_wrap(backup_fd, backupname, &filetime) == -1
++ && !ISSET(INSECURE_BACKUP)) {
++ statusbar(_("Error writing backup file %s: %s"), backupname,
++ strerror(errno));
++ /* If we can't write to the backup, DONT go on, since
++ whatever caused the backup file to fail (e.g. disk
++ full may well cause the real file write to fail, which
++ means we could lose both the backup and the original! */
++ goto cleanup_and_exit;
++ }
++
+ /* Copy the file. */
+ copy_status = copy_file(f, backup_file);
+
+@@ -1704,19 +1739,6 @@ bool write_file(const char *name, FILE *f_open, bool tmp, append_type
+ goto cleanup_and_exit;
+ }
+
+- /* And set its metadata. */
+- if (utime(backupname, &filetime) == -1 && !ISSET(INSECURE_BACKUP)) {
+- if (prompt_failed_backupwrite(backupname))
+- goto skip_backup;
+- statusbar(_("Error writing backup file %s: %s"), backupname,
+- strerror(errno));
+- /* If we can't write to the backup, DONT go on, since
+- whatever caused the backup file to fail (e.g. disk
+- full may well cause the real file write to fail, which
+- means we could lose both the backup and the original! */
+- goto cleanup_and_exit;
+- }
+-
+ free(backupname);
+ }
+
+--
+1.7.4
+
diff --git a/system/base/nano/files/fedora/nano-2.3.0-warnings.patch b/system/base/nano/files/fedora/nano-2.3.0-warnings.patch
new file mode 100644
index 00000000..5fa56179
--- /dev/null
+++ b/system/base/nano/files/fedora/nano-2.3.0-warnings.patch
@@ -0,0 +1,42 @@
+ po/Makefile.in.in | 1 +
+ src/nano.c | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/po/Makefile.in.in b/po/Makefile.in.in
+index ada8bb4..f7b2a95 100644
+--- a/po/Makefile.in.in
++++ b/po/Makefile.in.in
+@@ -20,6 +20,7 @@ VPATH = @srcdir@
+
+ prefix = @prefix@
+ exec_prefix = @exec_prefix@
++datarootdir = @datarootdir@
+ datadir = @datadir@
+ localedir = $(datadir)/locale
+ gettextsrcdir = $(datadir)/gettext/po
+diff --git a/src/nano.c b/src/nano.c
+index 269ab29..5b605bf 100644
+--- a/src/nano.c
++++ b/src/nano.c
+@@ -1925,7 +1925,7 @@ precalc_cleanup:
+ * TRUE. */
+ void do_output(char *output, size_t output_len, bool allow_cntrls)
+ {
+- size_t current_len, orig_lenpt, i = 0;
++ size_t current_len, orig_lenpt = 0, i = 0;
+ char *char_buf = charalloc(mb_cur_max());
+ int char_buf_len;
+
+diff --git a/src/search.c b/src/search.c
+index ca93098..3451600 100644
+--- a/src/search.c
++++ b/src/search.c
+@@ -138,7 +138,7 @@ int search_init(bool replacing, bool use_answer)
+ int i = 0;
+ char *buf;
+ sc *s;
+- void (*func)(void);
++ void (*func)(void) = (void (*)(void))0;
+ bool meta_key = FALSE, func_key = FALSE;
+ static char *backupstring = NULL;
+ /* The search string we'll be using. */
diff --git a/system/base/nano/pspec.xml b/system/base/nano/pspec.xml
new file mode 100644
index 00000000..46245b96
--- /dev/null
+++ b/system/base/nano/pspec.xml
@@ -0,0 +1,77 @@
+
+
+
+
+ nano
+ http://www.nano-editor.org/
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ GPLv3
+ app:console
+ GNU GPL'd Pico clone with more functionality
+ Nano is a small, free and friendly editor which aims to replace Pico, the default editor included in the non-free Pine package. Rather than just copying Pico's look and feel, nano also implements some missing (or disabled by default) features in Pico, such as "search and replace" and "go to line number".
+ http://www.nano-editor.org/dist/v2.3/nano-2.3.5.tar.gz
+
+ ncurses-devel
+ gettext-devel
+ slang
+
+
+
+
+
+
+
+ nano
+
+ ncurses
+ file
+
+
+ /etc
+ /usr/share/locale
+ /usr/share/doc/nano
+ /usr/share/man
+ /usr/share/info
+ /usr/share/nano
+ /usr/bin
+ /bin
+
+
+
+
+
+ 2014-07-11
+ 2.3.5
+ Version bump.
+ Vedat Demir
+ vedat@pisilinux.org
+
+
+ 2014-05-11
+ 2.3.1
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-07-26
+ 2.3.1
+ Fix dep, release bump.
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2011-06-27
+ 2.3.1
+ First release
+ Pisi Linux Admins
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/nano/translations.xml b/system/base/nano/translations.xml
new file mode 100644
index 00000000..97ae4015
--- /dev/null
+++ b/system/base/nano/translations.xml
@@ -0,0 +1,9 @@
+
+
+
+ nano
+ Konsol ortamında kullanabileceğiniz bir metin düzenleyicidir.
+ Nano özgür olmayan Pine paketinin içindeki metin düzenleme programı olan Pico'nun yerine geçme hedefini güden küçük, özgür ve kullanışlı bir metin düzenleme programıdır. Pico'nun görünüşünü ve işlevini kopyalamaktan çok, Nano aynı zamanda "ara ve değiştir" ve "satır numarasına git" gibi Pico'da olmayan (veya ön tanımlı olarak kapalı) bazı özellikleri sunar.
+ Nano est un petit éditeur libre et convivial qui a pour but de remplacer Pico, l'éditeur par défaut inclus dans le paquet non-libre Pine. Plutôt que juste copier l'apparence et le ressenti de Pico, nan implémente également certaines fonctionnalité manquantes (ou désactivées par défaut), tel que "rechercher et remplacer" ou "allez à la ligne numéro".
+
+
diff --git a/system/base/ncompress/actions.py b/system/base/ncompress/actions.py
new file mode 100644
index 00000000..6efcf1f6
--- /dev/null
+++ b/system/base/ncompress/actions.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import shelltools
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import get
+
+def build():
+ shelltools.move("Makefile.def", "Makefile")
+ autotools.make("-f Makefile CFLAGS='%s -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE'" % get.CFLAGS())
+
+def install():
+ pisitools.dobin("compress")
+ pisitools.dosym("compress", "/usr/bin/uncompress")
+
+ pisitools.doman("compress.1")
+ pisitools.dosym("compress.1", "/usr/share/man/man1/uncompress.1")
diff --git a/system/base/ncompress/files/ncompress-2GB.patch b/system/base/ncompress/files/ncompress-2GB.patch
new file mode 100644
index 00000000..8c545caf
--- /dev/null
+++ b/system/base/ncompress/files/ncompress-2GB.patch
@@ -0,0 +1,11 @@
+--- ncompress-4.2.4/compress42.c.2GB 2004-07-14 12:16:19.000000000 -0400
++++ ncompress-4.2.4/compress42.c 2004-07-14 12:16:59.000000000 -0400
+@@ -1329,7 +1329,7 @@
+ REG11 int boff;
+ REG12 int n_bits;
+ REG13 int ratio;
+- REG14 long checkpoint;
++ REG14 unsigned long long checkpoint;
+ REG15 code_int extcode;
+ union
+ {
diff --git a/system/base/ncompress/files/ncompress-4.2.4-endians.patch b/system/base/ncompress/files/ncompress-4.2.4-endians.patch
new file mode 100644
index 00000000..fdc96622
--- /dev/null
+++ b/system/base/ncompress/files/ncompress-4.2.4-endians.patch
@@ -0,0 +1,11 @@
+--- ncompress-4.2.4/compress42.c.endians 2006-09-19 13:53:58.000000000 +0200
++++ ncompress-4.2.4/compress42.c 2006-09-19 13:57:54.000000000 +0200
+@@ -432,7 +432,7 @@
+
+ union bytes
+ {
+- long word;
++ int word;
+ struct
+ {
+ #if BYTEORDER == 4321
diff --git a/system/base/ncompress/files/ncompress-4.2.4-lfs2.patch b/system/base/ncompress/files/ncompress-4.2.4-lfs2.patch
new file mode 100644
index 00000000..9da42eb5
--- /dev/null
+++ b/system/base/ncompress/files/ncompress-4.2.4-lfs2.patch
@@ -0,0 +1,52 @@
+--- ncompress-4.2.4/compress42.c.lfs 2002-06-19 19:19:33.000000000 -0400
++++ ncompress-4.2.4/compress42.c 2002-06-19 19:20:48.000000000 -0400
+@@ -130,6 +130,7 @@
+ * Add variable bit length output.
+ *
+ */
++#include
+ #include
+ #include
+ #include
+@@ -168,30 +169,6 @@
+ # define SIG_TYPE void (*)()
+ #endif
+
+-#ifndef NOFUNCDEF
+- extern void *malloc LARGS((int));
+- extern void free LARGS((void *));
+-#ifndef _IBMR2
+- extern int open LARGS((char const *,int,...));
+-#endif
+- extern int close LARGS((int));
+- extern int read LARGS((int,void *,int));
+- extern int write LARGS((int,void const *,int));
+- extern int chmod LARGS((char const *,int));
+- extern int unlink LARGS((char const *));
+- extern int chown LARGS((char const *,int,int));
+- extern int utime LARGS((char const *,struct utimbuf const *));
+- extern char *strcpy LARGS((char *,char const *));
+- extern char *strcat LARGS((char *,char const *));
+- extern int strcmp LARGS((char const *,char const *));
+- extern unsigned strlen LARGS((char const *));
+- extern void *memset LARGS((void *,char,unsigned int));
+- extern void *memcpy LARGS((void *,void const *,unsigned int));
+- extern int atoi LARGS((char const *));
+- extern void exit LARGS((int));
+- extern int isatty LARGS((int));
+-#endif
+-
+ #define MARK(a) { asm(" .globl M.a"); asm("M.a:"); }
+
+ #ifdef DEF_ERRNO
+@@ -535,8 +512,8 @@
+ char ofname[MAXPATHLEN]; /* Output filename */
+ int fgnd_flag = 0; /* Running in background (SIGINT=SIGIGN) */
+
+-long bytes_in; /* Total number of byte from input */
+-long bytes_out; /* Total number of byte to output */
++long long bytes_in; /* Total number of byte from input */
++long long bytes_out; /* Total number of byte to output */
+
+ /*
+ * 8086 & 80286 Has a problem with array bigger than 64K so fake the array
diff --git a/system/base/ncompress/files/ncompress-4.2.4-make.patch b/system/base/ncompress/files/ncompress-4.2.4-make.patch
new file mode 100644
index 00000000..e42b0752
--- /dev/null
+++ b/system/base/ncompress/files/ncompress-4.2.4-make.patch
@@ -0,0 +1,41 @@
+Index: ncompress-4.2.4.4/Makefile.def
+===================================================================
+--- ncompress-4.2.4.4.orig/Makefile.def
++++ ncompress-4.2.4.4/Makefile.def
+@@ -1,16 +1,16 @@
+ # Makefile generated by build.
+
+ # C complier
+-#CC=cc
++#CC=
+
+ # Install prefix
+ DESTDIR=
+
+ # Install directory for binarys
+-BINDIR=/usr/local/bin
++BINDIR=/usr/bin
+
+ # Install directory for manual
+-MANDIR=/usr/local/man/man1
++MANDIR=/usr/share/man/man1
+
+ # compiler options:
+ # options is a collection of:
+@@ -31,14 +31,14 @@ MANDIR=/usr/local/man/man1
+ # -DDEF_ERRNO=1 Define error (not defined in errno.h).
+ # -DMAXSEG_64K=1 -BITS=16 Support segment processsor like 80286.
+ #
+-options= $(CFLAGS) $(CPPFLAGS) -DDIRENT=1 -DUSERMEM=800000 -DREGISTERS=3
++options= $(CFLAGS) $(CPPFLAGS) -DDIRENT=1 -DSYSDIR=1 -DUTIME_H=1 -DUSERMEM=800000 -DREGISTERS=20 -DIBUFSIZE=1024 -DOBUFSIZE=1024
+
+ # libary options
+ LBOPT= $(LDFLAGS)
+
+
+ compress: Makefile compress42.c patchlevel.h
+- $(CC) -o compress $(options) "-DCOMPILE_DATE=\"`date`\"" compress42.c $(LBOPT)
++ $(CC) $(LDFLAGS) $(options) "-DCOMPILE_DATE=\"`date`\"" compress42.c -o compress
+
+ install: compress
+ [ -f $(DESTDIR)$(BINDIR)/compress ] && \
diff --git a/system/base/ncompress/pspec.xml b/system/base/ncompress/pspec.xml
new file mode 100644
index 00000000..3a7b9bc1
--- /dev/null
+++ b/system/base/ncompress/pspec.xml
@@ -0,0 +1,48 @@
+
+
+
+
+ ncompress
+ http://ncompress.sourceforge.net
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ public-domain
+ app:console
+ Another uncompressor for compatibility
+ The ncompress package contains the compress and uncompress file compression and decompression utilities, which are compatible with the original UNIX compress utility (.Z file extensions). These utilities can't handle gzipped (.gz file extensions) files, but gzip can handle compressed files.
+ mirrors://sourceforge/ncompress/ncompress-4.2.4.4.tar.gz
+
+ ncompress-4.2.4-make.patch
+ ncompress-4.2.4-lfs2.patch
+ ncompress-2GB.patch
+ ncompress-4.2.4-endians.patch
+
+
+
+
+ ncompress
+
+ /usr/bin
+ /usr/share/man
+
+
+
+
+
+ 2014-05-11
+ 4.2.4.4
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2011-12-20
+ 4.2.4.4
+ First release
+ Pisi Linux Admins
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/ncompress/translations.xml b/system/base/ncompress/translations.xml
new file mode 100644
index 00000000..72c688c9
--- /dev/null
+++ b/system/base/ncompress/translations.xml
@@ -0,0 +1,9 @@
+
+
+
+ ncompress
+ Bir başka sıkışmış dosya açma programı
+ Un autre outil de décompression de données pour compatibilité
+ Ein weiterer Nichtkompressor zu Kompatibilitätszwecken
+
+
diff --git a/system/base/ncurses/actions.py b/system/base/ncurses/actions.py
new file mode 100644
index 00000000..631062a3
--- /dev/null
+++ b/system/base/ncurses/actions.py
@@ -0,0 +1,102 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import get
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+
+WorkDir = "."
+WORKDIR = "%s/%s-%s" % (get.workDIR(), get.srcNAME(), get.srcVERSION())
+NCURSES = "ncurses-build"
+NCURSESW = "ncursesw-build"
+CONFIGPARAMS = "--without-debug \
+ --with-shared \
+ --with-normal \
+ --without-profile \
+ --disable-rpath \
+ --enable-const \
+ --enable-largefile \
+ --with-terminfo-dirs='/etc/terminfo:/usr/share/terminfo' \
+ --disable-termcap \
+ --enable-hard-tabs \
+ --enable-xmc-glitch \
+ --enable-colorfgbg \
+ --with-rcs-ids \
+ --with-mmask-t='long' \
+ --without-ada \
+ --enable-symlinks \
+ --without-gpm"
+
+def setup():
+ shelltools.makedirs(NCURSES)
+ shelltools.makedirs(NCURSESW)
+ shelltools.cd(NCURSESW)
+
+ global CONFIGPARAMS
+
+ if get.buildTYPE() == "_emul32":
+ pisitools.flags.add("-m32")
+ pisitools.ldflags.add("-m32")
+ shelltools.export("PKG_CONFIG_LIBDIR", "/usr/lib32/pkgconfig")
+ pisitools.dosed("%s/misc/gen-pkgconfig.in" % WORKDIR, "^(show_prefix=).*", "\\1'/usr'")
+ CONFIGPARAMS += " --prefix=/_emul32 \
+ --libdir=/usr/lib32 \
+ --libexecdir=/_emul32/lib \
+ --bindir=/_emul32/bin \
+ --sbindir=/_emul32/sbin \
+ --mandir=/_emul32/share/man"
+ else:
+ CONFIGPARAMS += " --prefix=/usr \
+ --libdir=/usr/lib \
+ --libexecdir=/usr/lib \
+ --bindir=/usr/bin \
+ --sbindir=/usr/sbin \
+ --mandir=/usr/share/man"
+
+ shelltools.system("%s/configure --enable-widec --enable-pc-files %s" % (WORKDIR, CONFIGPARAMS))
+
+
+def build():
+ global CONFIGPARAMS
+ shelltools.cd(NCURSESW)
+ autotools.make()
+ if not get.buildTYPE() == "_emul32" and get.ARCH() == "x86_64": CONFIGPARAMS += " --with-chtype=long"
+ shelltools.cd("../%s" % NCURSES)
+ shelltools.system("%s/configure %s" % (WORKDIR, CONFIGPARAMS))
+ autotools.make()
+
+def install():
+ shelltools.cd(NCURSESW)
+ autotools.rawInstall("DESTDIR=%s" % get.installDIR())
+ LIB = "/usr/lib32" if get.buildTYPE() == "_emul32" else "/usr/lib"
+ print LIB
+ for lib in ["ncurses", "form", "panel", "menu"]:
+ shelltools.echo("lib%s.so" % lib, "INPUT(-l%sw)" % lib)
+ pisitools.dolib_so("lib%s.so" % lib, destinationDirectory = LIB)
+ pisitools.dosym("lib%sw.a" % lib, "%s/lib%s.a" % (LIB, lib))
+ pisitools.dosym("libncurses++w.a", "%s/libncurses++.a" % LIB)
+ for lib in ["ncurses", "ncurses++", "form", "panel", "menu"]:
+ pisitools.dosym("%sw.pc" % lib, "%s/pkgconfig/%s.pc" % (LIB, lib))
+
+ shelltools.echo("libcursesw.so", "INPUT(-lncursesw)")
+ pisitools.dolib_so("libcursesw.so", destinationDirectory = LIB)
+ pisitools.dosym("libncurses.so", "%s/libcurses.so" % LIB)
+ pisitools.dosym("libncursesw.a", "%s/libcursesw.a" % LIB)
+ pisitools.dosym("libncurses.a", "%s/libcurses.a" % LIB)
+
+ shelltools.cd("../%s" % NCURSES)
+ for lib in ["ncurses", "form", "panel", "menu"]:
+ pisitools.dolib_so("lib/lib%s.so.%s" % (lib, get.srcVERSION()), destinationDirectory = LIB)
+ pisitools.dosym("lib%s.so.%s" % (lib, get.srcVERSION()), "%s/lib%s.so.5" % (LIB, lib))
+
+ if get.buildTYPE() == "_emul32":
+ pisitools.removeDir("/_emul32")
+ return
+
+ shelltools.cd(WORKDIR)
+ shelltools.system("grep -B 100 '$Id' README > license.txt")
+ pisitools.dodoc("ANNOUNCE", "NEWS", "README*", "TO-DO", "license.txt")
diff --git a/system/base/ncurses/pspec.xml b/system/base/ncurses/pspec.xml
new file mode 100644
index 00000000..7ff72743
--- /dev/null
+++ b/system/base/ncurses/pspec.xml
@@ -0,0 +1,101 @@
+
+
+
+
+ ncurses
+ http://www.gnu.org/software/ncurses/ncurses.html
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ MIT
+ library
+ Console display library
+ The NCurses is a library of functions that manage an application's display on character-cell terminals. The NCurses library defines many functions such as moving mouse and cursor, keyboard mapping and dispaying in color.
+ mirrors://gnu/ncurses/ncurses-5.9.tar.gz
+
+ gnuconfig
+
+
+
+
+ ncurses
+
+ /etc
+ /lib
+ /usr/bin
+ /usr/lib
+ /usr/share/terminfo
+ /usr/share/tabset
+ /usr/share/man
+ /usr/share/doc
+
+
+
+
+ ncurses-devel
+ system.devel
+ Development files for ncurses
+
+ ncurses
+
+
+ /usr/include
+ /usr/lib/static
+ /usr/lib32/static
+ /usr/share/man/man3
+
+
+
+
+ ncurses-32bit
+ emul32
+ 32-bit shared libraries for ncurses
+ _emul32
+
+ ncurses
+
+
+ /usr/lib32
+ /usr/lib32/pkgconfig
+
+
+
+
+
+ 2014-09-14
+ 5.9
+ Fix build .pc files.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2014-05-11
+ 5.9
+ Release bump.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-08-31
+ 5.9
+ Rebuild.
+ Marcin Bojara
+ marcin@pisilinux.org
+
+
+ 2013-08-27
+ 5.9_20121110
+ Clean ncurses
+ Serdar Soytetir
+ kaptan@pisilinux.org
+
+
+ 2012-11-14
+ 5.9_20121110
+ First release
+ Erdinç Gültekin
+ admins@pisilinux.org
+
+
+
diff --git a/system/base/ncurses/translations.xml b/system/base/ncurses/translations.xml
new file mode 100644
index 00000000..fe856e84
--- /dev/null
+++ b/system/base/ncurses/translations.xml
@@ -0,0 +1,14 @@
+
+
+
+ ncurses
+ Konsol görsel kütüphanesi
+ NCurses, bir uygulamanın karakter tabanlı uçbirimlerde görüntüleri üzerinde çalışabilmeyi sağlayan işlevler kütüphanesidir. Uygulama programları için imleci hareket ettirmek, pencereler oluşturmak, renkler üretmek, fare ile oynamak v.b. işlevler sağlamaktadır.
+ NCurses est une librairie de fonction gérant l'affichage des applications pour terminaux en mode caractères. La libraries NCurses défini de nombreuses fonctionalités telles le mouvement de la souris et du curseur, la disposition du clavier et l'affichage en couleur.
+
+
+
+ ncurses-devel
+ ncurses için geliştirme dosyaları
+
+
diff --git a/system/base/net-tools/actions.py b/system/base/net-tools/actions.py
new file mode 100644
index 00000000..0c11d1a1
--- /dev/null
+++ b/system/base/net-tools/actions.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import autotools
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import shelltools
+from pisi.actionsapi import get
+
+def setup():
+ pisitools.dosed("Makefile", "(?m)^(COPTS =.*)", "COPTS = %s -fPIE" % get.CFLAGS())
+ pisitools.dosed("Makefile", "(?m)^(LOPTS =.*)", "LOPTS = %s -pie" % get.LDFLAGS())
+
+def build():
+ shelltools.export("CC", get.CC())
+
+ autotools.make("libdir")
+ autotools.make()
+ autotools.make("ether-wake")
+ autotools.make("i18ndir")
+
+def install():
+ autotools.rawInstall("BASEDIR=%s" % get.installDIR())
+
+ pisitools.dosbin("ether-wake")
+ pisitools.dosym("/bin/hostname", "/usr/bin/hostname")
+
+ pisitools.dodoc("README", "README.ipv6", "TODO")
diff --git a/system/base/net-tools/files/01_all_net-tools-1.60-2.6-compilefix.patch.bz2 b/system/base/net-tools/files/01_all_net-tools-1.60-2.6-compilefix.patch.bz2
new file mode 100644
index 00000000..0c751beb
Binary files /dev/null and b/system/base/net-tools/files/01_all_net-tools-1.60-2.6-compilefix.patch.bz2 differ
diff --git a/system/base/net-tools/files/02_all_net-tools-1.60-gcc34.patch.bz2 b/system/base/net-tools/files/02_all_net-tools-1.60-gcc34.patch.bz2
new file mode 100644
index 00000000..24cd7cf9
Binary files /dev/null and b/system/base/net-tools/files/02_all_net-tools-1.60-gcc34.patch.bz2 differ
diff --git a/system/base/net-tools/files/03_all_net-tools-1.60-cleanup-list-handling.patch.bz2 b/system/base/net-tools/files/03_all_net-tools-1.60-cleanup-list-handling.patch.bz2
new file mode 100644
index 00000000..1e178189
Binary files /dev/null and b/system/base/net-tools/files/03_all_net-tools-1.60-cleanup-list-handling.patch.bz2 differ
diff --git a/system/base/net-tools/files/04_all_net-tools-1.60-get_name.patch.bz2 b/system/base/net-tools/files/04_all_net-tools-1.60-get_name.patch.bz2
new file mode 100644
index 00000000..4e80d482
Binary files /dev/null and b/system/base/net-tools/files/04_all_net-tools-1.60-get_name.patch.bz2 differ
diff --git a/system/base/net-tools/files/20_all_net-tools-1.54-ipvs.patch.bz2 b/system/base/net-tools/files/20_all_net-tools-1.54-ipvs.patch.bz2
new file mode 100644
index 00000000..5a3e1ebf
Binary files /dev/null and b/system/base/net-tools/files/20_all_net-tools-1.54-ipvs.patch.bz2 differ
diff --git a/system/base/net-tools/files/21_all_net-tools-1.57-bug22040.patch.bz2 b/system/base/net-tools/files/21_all_net-tools-1.57-bug22040.patch.bz2
new file mode 100644
index 00000000..00642dcb
Binary files /dev/null and b/system/base/net-tools/files/21_all_net-tools-1.57-bug22040.patch.bz2 differ
diff --git a/system/base/net-tools/files/22_all_net-tools-1.60-manydevs.patch.bz2 b/system/base/net-tools/files/22_all_net-tools-1.60-manydevs.patch.bz2
new file mode 100644
index 00000000..e926cbd5
Binary files /dev/null and b/system/base/net-tools/files/22_all_net-tools-1.60-manydevs.patch.bz2 differ
diff --git a/system/base/net-tools/files/23_all_net-tools-1.60-miiioctl.patch.bz2 b/system/base/net-tools/files/23_all_net-tools-1.60-miiioctl.patch.bz2
new file mode 100644
index 00000000..e27a8fe6
Binary files /dev/null and b/system/base/net-tools/files/23_all_net-tools-1.60-miiioctl.patch.bz2 differ
diff --git a/system/base/net-tools/files/24_all_net-tools-1.60-virtualname.patch.bz2 b/system/base/net-tools/files/24_all_net-tools-1.60-virtualname.patch.bz2
new file mode 100644
index 00000000..bbbdd289
Binary files /dev/null and b/system/base/net-tools/files/24_all_net-tools-1.60-virtualname.patch.bz2 differ
diff --git a/system/base/net-tools/files/25_all_net-tools-1.60-cycle.patch.bz2 b/system/base/net-tools/files/25_all_net-tools-1.60-cycle.patch.bz2
new file mode 100644
index 00000000..a0649b21
Binary files /dev/null and b/system/base/net-tools/files/25_all_net-tools-1.60-cycle.patch.bz2 differ
diff --git a/system/base/net-tools/files/26_all_net-tools-1.60-overflow.patch.bz2 b/system/base/net-tools/files/26_all_net-tools-1.60-overflow.patch.bz2
new file mode 100644
index 00000000..3a0b1198
Binary files /dev/null and b/system/base/net-tools/files/26_all_net-tools-1.60-overflow.patch.bz2 differ
diff --git a/system/base/net-tools/files/27_all_net-tools-1.60-netstat_ulong.patch.bz2 b/system/base/net-tools/files/27_all_net-tools-1.60-netstat_ulong.patch.bz2
new file mode 100644
index 00000000..f574c38d
Binary files /dev/null and b/system/base/net-tools/files/27_all_net-tools-1.60-netstat_ulong.patch.bz2 differ
diff --git a/system/base/net-tools/files/50_all_net-tools-1.60-multiline-string.patch.bz2 b/system/base/net-tools/files/50_all_net-tools-1.60-multiline-string.patch.bz2
new file mode 100644
index 00000000..3ea208dd
Binary files /dev/null and b/system/base/net-tools/files/50_all_net-tools-1.60-multiline-string.patch.bz2 differ
diff --git a/system/base/net-tools/files/51_all_net-tools-1.60-man.patch.bz2 b/system/base/net-tools/files/51_all_net-tools-1.60-man.patch.bz2
new file mode 100644
index 00000000..35a1b549
Binary files /dev/null and b/system/base/net-tools/files/51_all_net-tools-1.60-man.patch.bz2 differ
diff --git a/system/base/net-tools/files/52_all_net-tools-1.60-numeric-ports.patch.bz2 b/system/base/net-tools/files/52_all_net-tools-1.60-numeric-ports.patch.bz2
new file mode 100644
index 00000000..cc77fe59
Binary files /dev/null and b/system/base/net-tools/files/52_all_net-tools-1.60-numeric-ports.patch.bz2 differ
diff --git a/system/base/net-tools/files/53_all_net-tools-1.60-appletalk.patch.bz2 b/system/base/net-tools/files/53_all_net-tools-1.60-appletalk.patch.bz2
new file mode 100644
index 00000000..e4bd97e9
Binary files /dev/null and b/system/base/net-tools/files/53_all_net-tools-1.60-appletalk.patch.bz2 differ
diff --git a/system/base/net-tools/files/54_all_net-tools-1.60-wide.patch.bz2 b/system/base/net-tools/files/54_all_net-tools-1.60-wide.patch.bz2
new file mode 100644
index 00000000..ce4e56cb
Binary files /dev/null and b/system/base/net-tools/files/54_all_net-tools-1.60-wide.patch.bz2 differ
diff --git a/system/base/net-tools/files/55_all_net-tools-1.60-Makefile.patch.bz2 b/system/base/net-tools/files/55_all_net-tools-1.60-Makefile.patch.bz2
new file mode 100644
index 00000000..bc1a45ce
Binary files /dev/null and b/system/base/net-tools/files/55_all_net-tools-1.60-Makefile.patch.bz2 differ
diff --git a/system/base/net-tools/files/56_all_net-tools-1.60-ipv6-hostname.patch.bz2 b/system/base/net-tools/files/56_all_net-tools-1.60-ipv6-hostname.patch.bz2
new file mode 100644
index 00000000..c88b13ad
Binary files /dev/null and b/system/base/net-tools/files/56_all_net-tools-1.60-ipv6-hostname.patch.bz2 differ
diff --git a/system/base/net-tools/files/57_all_net-tools-1.60-ifconfig-infiniband.patch.bz2 b/system/base/net-tools/files/57_all_net-tools-1.60-ifconfig-infiniband.patch.bz2
new file mode 100644
index 00000000..91119f96
Binary files /dev/null and b/system/base/net-tools/files/57_all_net-tools-1.60-ifconfig-infiniband.patch.bz2 differ
diff --git a/system/base/net-tools/files/60_all_net-tools-1.60-headers.patch.bz2 b/system/base/net-tools/files/60_all_net-tools-1.60-headers.patch.bz2
new file mode 100644
index 00000000..8c09e89c
Binary files /dev/null and b/system/base/net-tools/files/60_all_net-tools-1.60-headers.patch.bz2 differ
diff --git a/system/base/net-tools/files/gcc-4.3.patch b/system/base/net-tools/files/gcc-4.3.patch
new file mode 100644
index 00000000..4f8cd46d
--- /dev/null
+++ b/system/base/net-tools/files/gcc-4.3.patch
@@ -0,0 +1,10 @@
+--- lib/ec_hw.c 1999-11-20 23:02:53.000000000 +0200
++++ lib/ec_hw.c 2008-02-05 10:43:50.000000000 +0200
+@@ -18,6 +18,7 @@
+
+ #include
+ #include "net-support.h"
++#include
+
+ struct hwtype ec_hwtype =
+ {
diff --git a/system/base/net-tools/files/kernel_headers.patch b/system/base/net-tools/files/kernel_headers.patch
new file mode 100644
index 00000000..3d242f10
--- /dev/null
+++ b/system/base/net-tools/files/kernel_headers.patch
@@ -0,0 +1,16 @@
+diff -ur net-tools-1.60.orig/lib/fddi.c net-tools-1.60/lib/fddi.c
+--- net-tools-1.60.orig/lib/fddi.c 2000-03-05 13:26:02.000000000 +0200
++++ net-tools-1.60/lib/fddi.c 2007-01-13 23:20:29.774729400 +0200
+@@ -27,6 +27,10 @@
+ #error "Disable HW Type FDDI"
+ #endif
+ #if __GLIBC__ >= 2
++#define __be32 u_int32_t
++#define __le32 u_int32_t
++#define __be16 u_int16_t
++#define __le16 u_int16_t
+ #include
+ #else
+ #include
+net-tools-1.60.orig/lib/fddi.o ve net-tools-1.60/lib/fddi.o dosyaları birbirinden farklı
+net-tools-1.60.orig/lib/libnet-tools.a ve net-tools-1.60/lib/libnet-tools.a dosyaları birbirinden farklı
diff --git a/system/base/net-tools/files/large-buffer.patch b/system/base/net-tools/files/large-buffer.patch
new file mode 100644
index 00000000..016012ae
--- /dev/null
+++ b/system/base/net-tools/files/large-buffer.patch
@@ -0,0 +1,11 @@
+--- statistics.c 2007-11-10 17:35:28.000000000 +0200
++++ statistics.c 2007-11-10 17:36:00.000000000 +0200
+@@ -291,7 +291,7 @@
+
+ void process_fd(FILE *f)
+ {
+- char buf1[1024], buf2[1024];
++ char buf1[2048], buf2[2048];
+ char *sp, *np, *p;
+ while (fgets(buf1, sizeof buf1, f)) {
+ int endflag;
diff --git a/system/base/net-tools/files/net-tools-missing.patch b/system/base/net-tools/files/net-tools-missing.patch
new file mode 100644
index 00000000..7e138dbe
--- /dev/null
+++ b/system/base/net-tools/files/net-tools-missing.patch
@@ -0,0 +1,576 @@
+diff -Nur net-tools-1.60.orig/config.h net-tools-1.60/config.h
+--- net-tools-1.60.orig/config.h 1970-01-01 02:00:00.000000000 +0200
++++ net-tools-1.60/config.h 2005-07-14 14:19:22.000000000 +0300
+@@ -0,0 +1,75 @@
++/*
++* config.h Automatically generated configuration includefile
++*
++* NET-TOOLS A collection of programs that form the base set of the
++* NET-3 Networking Distribution for the LINUX operating
++* system.
++*
++* DO NOT EDIT DIRECTLY
++*
++*/
++
++/*
++ *
++ * Internationalization
++ *
++ * The net-tools package has currently been translated to French,
++ * German and Brazilian Portugese. Other translations are, of
++ * course, welcome. Answer `n' here if you have no support for
++ * internationalization on your system.
++ *
++ */
++#define I18N 1
++
++/*
++ *
++ * Protocol Families.
++ *
++ */
++#define HAVE_AFUNIX 1
++#define HAVE_AFINET 1
++#define HAVE_AFINET6 1
++#define HAVE_AFIPX 1
++#define HAVE_AFATALK 1
++#define HAVE_AFAX25 1
++#define HAVE_AFNETROM 1
++#define HAVE_AFROSE 1
++#define HAVE_AFX25 1
++#define HAVE_AFECONET 1
++#define HAVE_AFDECnet 0
++#define HAVE_AFASH 1
++
++/*
++ *
++ * Device Hardware types.
++ *
++ */
++#define HAVE_HWETHER 1
++#define HAVE_HWARC 1
++#define HAVE_HWSLIP 1
++#define HAVE_HWPPP 1
++#define HAVE_HWTUNNEL 1
++#define HAVE_HWSTRIP 0
++#define HAVE_HWTR 0
++#define HAVE_HWAX25 1
++#define HAVE_HWROSE 1
++#define HAVE_HWNETROM 1
++#define HAVE_HWX25 1
++#define HAVE_HWFR 1
++#define HAVE_HWSIT 1
++#define HAVE_HWFDDI 1
++#define HAVE_HWHIPPI 1
++#define HAVE_HWASH 1
++#define HAVE_HWHDLCLAPB 1
++#define HAVE_HWIRDA 1
++#define HAVE_HWEC 1
++#define HAVE_HWIB 1
++
++/*
++ *
++ * Other Features.
++ *
++ */
++#define HAVE_FW_MASQUERADE 1
++#define HAVE_IP_TOOLS 1
++#define HAVE_MII 1
+diff -Nur net-tools-1.60.orig/config.make net-tools-1.60/config.make
+--- net-tools-1.60.orig/config.make 1970-01-01 02:00:00.000000000 +0200
++++ net-tools-1.60/config.make 2005-07-14 14:19:22.000000000 +0300
+@@ -0,0 +1,36 @@
++I18N=1
++HAVE_AFUNIX=1
++HAVE_AFINET=1
++HAVE_AFINET6=1
++HAVE_AFIPX=1
++HAVE_AFATALK=1
++HAVE_AFAX25=1
++HAVE_AFNETROM=1
++HAVE_AFROSE=1
++HAVE_AFX25=1
++HAVE_AFECONET=1
++# HAVE_AFDECnet=0
++HAVE_AFASH=1
++HAVE_HWETHER=1
++HAVE_HWARC=1
++HAVE_HWSLIP=1
++HAVE_HWPPP=1
++HAVE_HWTUNNEL=1
++HAVE_HWSTRIP=0
++HAVE_HWTR=0
++HAVE_HWAX25=1
++HAVE_HWROSE=1
++HAVE_HWNETROM=1
++HAVE_HWX25=1
++HAVE_HWFR=1
++HAVE_HWSIT=1
++HAVE_HWFDDI=1
++HAVE_HWHIPPI=1
++HAVE_HWASH=1
++HAVE_HWHDLCLAPB=1
++HAVE_HWIRDA=1
++HAVE_HWEC=1
++HAVE_HWIB=1
++HAVE_FW_MASQUERADE=1
++HAVE_IP_TOOLS=1
++HAVE_MII=1
+diff -Nur net-tools-1.60.orig/ether-wake.c net-tools-1.60/ether-wake.c
+--- net-tools-1.60.orig/ether-wake.c 1970-01-01 02:00:00.000000000 +0200
++++ net-tools-1.60/ether-wake.c 2005-07-14 14:19:35.000000000 +0300
+@@ -0,0 +1,340 @@
++/* ether-wake.c: Send a magic packet to wake up sleeping machines. */
++
++static char version_msg[] =
++"ether-wake.c: v1.05 12/28/2000 Donald Becker, http://www.scyld.com/";
++static char brief_usage_msg[] =
++"usage: ether-wake [-i ] [-p aa:bb:cc:dd[:ee:ff]] 00:11:22:33:44:55\n\
++ Use '-u' to see the complete set of options.\n";
++static char usage_msg[] =
++"usage: ether-wake [-i ] [-p aa:bb:cc:dd[:ee:ff]] 00:11:22:33:44:55\n\
++\n\
++This program generates and transmits a Wake-On-LAN (WOL) \"Magic Packet\",\n\
++used for restarting machines that have been soft-powered-down\n\
++(ACPI D3-warm state). It currently generates the standard AMD Magic Packet\n\
++format, with an optional password appended.\n\
++\n\
++The single required parameter is the Ethernet MAC (station) address\n\
++of the machine to wake. This is typically retrieved with the 'arp'\n\
++program while the target machine is awake.\n\
++\n\
++Options:\n\
++ -b Send wake-up packet to the broadcast address.\n\
++ -D Increase the debug level.\n\
++ -i ifname Use interface IFNAME instead of the default 'eth0'.\n\
++ -p Append the four or six byte password PW to the packet.\n\
++ A password is only required for a few adapter types.\n\
++ The password may be specified in ethernet hex format\n\
++ or dotted decimal (Internet address)\n\
++ -p 00:22:44:66:88:aa\n\
++ -p 192.168.1.1\n\
++";
++
++/*
++ This program generates and transmits a Wake-On-LAN (WOL) "Magic Packet",
++ used for restarting machines that have been soft-powered-down
++ (ACPI D3-warm state). It currently generates the standard AMD Magic Packet
++ format, with an optional password appended.
++
++ This software may be used and distributed according to the terms
++ of the GNU Public License, incorporated herein by reference.
++ Contact the author for use under other terms.
++
++ This source file is part of the network tricks package.
++
++ The author may be reached as becker@scyld, or C/O
++ Scyld Computing Corporation
++ 410 Severn Ave., Suite 210
++ Annapolis MD 21403
++
++ The single required parameter is the Ethernet MAC (station) address
++ of the machine to wake. This is typically retrieved with the 'arp'
++ program while the target machine is awake.
++
++ Options:
++ -b Send wake-up packet to the broadcast address.
++ -D Increase the debug level.
++ -i ifname Use interface IFNAME instead of the default "eth0".
++ -p Append the four or six byte password PW to the packet.
++ A password is only required for a few adapter types.
++ The password may be specified in ethernet hex format
++ or dotted decimal (Internet address)
++ -p 00:22:44:66:88:aa
++ -p 192.168.1.1
++
++ Note: On some systems dropping root capability allows the process to be
++ dumped, traced or debugged.
++ If someone traces this program, they get control of a raw socket.
++ Linux handles this safely, but beware when porting this program.
++
++*/
++
++#include
++#include
++#include
++#include
++#include
++#include
++
++#if 0 /* Only exists on some versions. */
++#include
++#endif
++
++#include
++
++#include
++#include
++#include
++
++#ifdef UIO_MAXIOV
++/*extern int setsockopt __P ((int __fd, int __level, int __optname,
++ __ptr_t __optval, int __optlen));*/
++#else /* New, correct head files. */
++#include
++#endif
++#ifdef USE_SENDMSG
++#include
++#endif
++
++u_char outpack[1000];
++int outpack_sz = 0;
++int debug = 0;
++u_char wol_passwd[6];
++int wol_passwd_sz = 0;
++
++static int opt_no_src_addr = 0, opt_broadcast = 0;
++
++static int get_fill(unsigned char *pkt, char *arg);
++static int get_wol_pw(const char *optarg);
++
++int main(int argc, char *argv[])
++{
++ struct sockaddr whereto; /* who to wake up */
++ char *ifname = "eth0";
++ int one = 1; /* True, for socket options. */
++ int s; /* Raw socket */
++ int errflag = 0, verbose = 0, do_version = 0;
++ int i, c, pktsize;
++
++ while ((c = getopt(argc, argv, "bDi:p:uvV")) != -1)
++ switch (c) {
++ case 'b': opt_broadcast++; break;
++ case 'D': debug++; break;
++ case 'i': ifname = optarg; break;
++ case 'p': get_wol_pw(optarg); break;
++ case 'u': printf(usage_msg); return 0;
++ case 'v': verbose++; break;
++ case 'V': do_version++; break;
++ case '?':
++ errflag++;
++ }
++ if (verbose || do_version)
++ printf("%s\n", version_msg);
++ if (errflag) {
++ fprintf(stderr, brief_usage_msg);
++ return 3;
++ }
++
++ if (optind == argc) {
++ fprintf(stderr, "Specify the Ethernet address as 00:11:22:33:44:55.\n");
++ return 3;
++ }
++
++ /* Note: PF_INET, SOCK_DGRAM, IPPROTO_UDP would allow SIOCGIFHWADDR to
++ work as non-root, but we need SOCK_PACKET to specify the Ethernet
++ destination address. */
++ if ((s = socket(AF_INET, SOCK_PACKET, SOCK_PACKET)) < 0) {
++ if (errno == EPERM)
++ fprintf(stderr, "ether-wake must run as root\n");
++ else
++ perror("ether-wake: socket");
++ if (! debug)
++ return 2;
++ }
++ /* Don't revert if debugging allows a normal user to get the raw socket. */
++ setuid(getuid());
++
++ pktsize = get_fill(outpack, argv[optind]);
++
++ /* Fill in the source address, if possible.
++ The code to retrieve the local station address is Linux specific. */
++ if (! opt_no_src_addr){
++ struct ifreq if_hwaddr;
++ unsigned char *hwaddr = if_hwaddr.ifr_hwaddr.sa_data;
++
++ strcpy(if_hwaddr.ifr_name, ifname);
++ if (ioctl(s, SIOCGIFHWADDR, &if_hwaddr) < 0) {
++ fprintf(stderr, "SIOCGIFHWADDR on %s failed: %s\n", ifname,
++ strerror(errno));
++ return 1;
++ }
++ memcpy(outpack+6, if_hwaddr.ifr_hwaddr.sa_data, 6);
++
++ if (verbose) {
++ printf("The hardware address (SIOCGIFHWADDR) of %s is type %d "
++ "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x.\n", ifname,
++ if_hwaddr.ifr_hwaddr.sa_family, hwaddr[0], hwaddr[1],
++ hwaddr[2], hwaddr[3], hwaddr[4], hwaddr[5]);
++ }
++ }
++
++ if (wol_passwd_sz > 0) {
++ memcpy(outpack+pktsize, wol_passwd, wol_passwd_sz);
++ pktsize += wol_passwd_sz;
++ }
++
++ if (verbose > 1) {
++ printf("The final packet is: ");
++ for (i = 0; i < pktsize; i++)
++ printf(" %2.2x", outpack[i]);
++ printf(".\n");
++ }
++
++ /* This is necessary for broadcasts to work */
++ if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char *)&one, sizeof(one)) < 0)
++ perror("setsockopt: SO_BROADCAST");
++
++ whereto.sa_family = 0;
++ strcpy(whereto.sa_data, ifname);
++
++ if ((i = sendto(s, outpack, pktsize, 0, &whereto, sizeof(whereto))) < 0)
++ perror("sendto");
++ else if (debug)
++ printf("Sendto worked ! %d.\n", i);
++
++#ifdef USE_SEND
++ if (bind(s, &whereto, sizeof(whereto)) < 0)
++ perror("bind");
++ else if (send(s, outpack, 100, 0) < 0)
++ perror("send");
++#endif
++#ifdef USE_SENDMSG
++ {
++ struct msghdr msghdr;
++ struct iovec iovector[1];
++ msghdr.msg_name = &whereto;
++ msghdr.msg_namelen = sizeof(whereto);
++ msghdr.msg_iov = iovector;
++ msghdr.msg_iovlen = 1;
++ iovector[0].iov_base = outpack;
++ iovector[0].iov_len = pktsize;
++ if ((i = sendmsg(s, &msghdr, 0)) < 0)
++ perror("sendmsg");
++ else if (debug)
++ printf("sendmsg worked, %d (%d).\n", i, errno);
++ }
++#endif
++
++ return 0;
++}
++
++static int get_fill(unsigned char *pkt, char *arg)
++{
++ int sa[6];
++ unsigned char station_addr[6];
++ int byte_cnt;
++ int offset, i;
++ char *cp;
++
++ for (cp = arg; *cp; cp++)
++ if (*cp != ':' && !isxdigit(*cp)) {
++ (void)fprintf(stderr,
++ "ping: patterns must be specified as hex digits.\n");
++ exit(2);
++ }
++
++ byte_cnt = sscanf(arg, "%2x:%2x:%2x:%2x:%2x:%2x",
++ &sa[0], &sa[1], &sa[2], &sa[3], &sa[4], &sa[5]);
++ for (i = 0; i < 6; i++)
++ station_addr[i] = sa[i];
++ if (debug)
++ fprintf(stderr, "Command line stations address is "
++ "%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x.\n",
++ sa[0], sa[1], sa[2], sa[3], sa[4], sa[5]);
++
++ if (byte_cnt != 6) {
++ (void)fprintf(stderr,
++ "ping: The Magic Packet address must be specified as "
++ "00:11:22:33:44:55.\n");
++ exit(2);
++ }
++
++ if (opt_broadcast)
++ memset(pkt+0, 0xff, 6);
++ else
++ memcpy(pkt, station_addr, 6);
++ memcpy(pkt+6, station_addr, 6);
++ pkt[12] = 0x08; /* Or 0x0806 for ARP, 0x8035 for RARP */
++ pkt[13] = 0x42;
++ offset = 14;
++
++ memset(pkt+offset, 0xff, 6);
++ offset += 6;
++
++ for (i = 0; i < 16; i++) {
++ memcpy(pkt+offset, station_addr, 6);
++ offset += 6;
++ }
++ if (debug) {
++ fprintf(stderr, "Packet is ");
++ for (i = 0; i < offset; i++)
++ fprintf(stderr, " %2.2x", pkt[i]);
++ fprintf(stderr, ".\n");
++ }
++ return offset;
++}
++
++static int get_wol_pw(const char *optarg)
++{
++ int passwd[6];
++ int byte_cnt;
++ int i;
++
++ byte_cnt = sscanf(optarg, "%2x:%2x:%2x:%2x:%2x:%2x",
++ &passwd[0], &passwd[1], &passwd[2],
++ &passwd[3], &passwd[4], &passwd[5]);
++ if (byte_cnt < 4)
++ byte_cnt = sscanf(optarg, "%d.%d.%d.%d",
++ &passwd[0], &passwd[1], &passwd[2], &passwd[3]);
++ if (byte_cnt < 4) {
++ fprintf(stderr, "Unable to read the Wake-On-LAN password.\n");
++ return 0;
++ }
++ printf(" The Magic packet password is %2.2x %2.2x %2.2x %2.2x (%d).\n",
++ passwd[0], passwd[1], passwd[2], passwd[3], byte_cnt);
++ for (i = 0; i < byte_cnt; i++)
++ wol_passwd[i] = passwd[i];
++ return wol_passwd_sz = byte_cnt;
++}
++
++#if 0
++{
++ to = (struct sockaddr_in *)&whereto;
++ to->sin_family = AF_INET;
++ if (inet_aton(target, &to->sin_addr)) {
++ hostname = target;
++ }
++ memset (&sa, 0, sizeof sa);
++ sa.sa_family = AF_INET;
++ strncpy (sa.sa_data, interface, sizeof sa.sa_data);
++ sendto (sock, buf, bufix + len, 0, &sa, sizeof sa);
++ strncpy (sa.sa_data, interface, sizeof sa.sa_data);
++#if 1
++ sendto (sock, buf, bufix + len, 0, &sa, sizeof sa);
++#else
++ bind (sock, &sa, sizeof sa);
++ connect();
++ send (sock, buf, bufix + len, 0);
++#endif
++}
++#endif
++
++
++/*
++ * Local variables:
++ * compile-command: "gcc -O -Wall -o ether-wake ether-wake.c"
++ * c-indent-level: 4
++ * c-basic-offset: 4
++ * c-indent-level: 4
++ * tab-width: 4
++ * End:
++ */
+diff -Nur net-tools-1.60.orig/include/linux/if_infiniband.h net-tools-1.60/include/linux/if_infiniband.h
+--- net-tools-1.60.orig/include/linux/if_infiniband.h 1970-01-01 02:00:00.000000000 +0200
++++ net-tools-1.60/include/linux/if_infiniband.h 2005-07-14 14:19:58.000000000 +0300
+@@ -0,0 +1,40 @@
++/*
++ * This software is available to you under a choice of one of two
++ * licenses. You may choose to be licensed under the terms of the GNU
++ * General Public License (GPL) Version 2, available at
++ * , or the OpenIB.org BSD
++ * license, available in the LICENSE.TXT file accompanying this
++ * software. These details are also available at
++ * .
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
++ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
++ * SOFTWARE.
++ *
++ * Copyright (c) 2004 Topspin Communications. All rights reserved.
++ *
++ * $Id: if_infiniband.h,v 1.2 2005/03/16 23:47:34 vapier Exp $
++ */
++
++/*
++ * this is a slightly touched up version of the header
++ * found in linux-2.6 ... the point is to make sure it
++ * allows for all systems to build properly. This
++ * includes glibc-2.2.x, uclibc, etc...
++ */
++
++#ifndef _LINUX_IF_INFINIBAND_H
++#define _LINUX_IF_INFINIBAND_H
++
++#define INFINIBAND_ALEN 20 /* Octets in IPoIB HW addr */
++
++#ifndef ARPHRD_INFINIBAND
++#define ARPHRD_INFINIBAND 32
++#endif
++
++#endif /* _LINUX_IF_INFINIBAND_H */
+diff -Nur net-tools-1.60.orig/man/en_US/ether-wake.8 net-tools-1.60/man/en_US/ether-wake.8
+--- net-tools-1.60.orig/man/en_US/ether-wake.8 1970-01-01 02:00:00.000000000 +0200
++++ net-tools-1.60/man/en_US/ether-wake.8 2005-07-14 14:19:41.000000000 +0300
+@@ -0,0 +1,65 @@
++.\" Hey, EMACS: -*- nroff -*-
++.\" First parameter, NAME, should be all caps
++.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
++.\" other parameters are allowed: see man(7), man(1)
++.TH ETHER\-WAKE 8 "December 17, 2002"
++.\" Please adjust this date whenever revising the manpage.
++.\"
++.\" Some roff macros, for reference:
++.\" .nh disable hyphenation
++.\" .hy enable hyphenation
++.\" .ad l left justify
++.\" .ad b justify to both left and right margins
++.\" .nf disable filling
++.\" .fi enable filling
++.\" .br insert line break
++.\" .sp insert n+1 empty lines
++.\" for manpage-specific macros, see man(7)
++.SH NAME
++ether\-wake \- A tool to send magic WOL packages
++.SH SYNOPSIS
++.B ether\-wake
++.RI [ options ] " MAC-Address"
++.SH DESCRIPTION
++This manual page documents briefly the
++.B ether\-wake
++commands.
++.PP
++.\" TeX users may be more comfortable with the \fB\fP and
++.\" \fI\fP escape sequences to invode bold face and italics,
++.\" respectively.
++\fBether\-wake\fP is a program that generates and transmits Wake-On-LAN
++(WOL) "Magic Packet", used for restarting machines that have been
++soft-powered-down (ACPI D3-warm state). It currently generates the standard
++AMD Magic Packet format, with an optional password appended.
++.SH OPTIONS
++\fBether\-wake\fP needs a single dash (-) in front of the option.
++A summary of options is included below.
++.TP
++.B \-b
++Send wake-up packet to the broadcast address.
++.TP
++.B \-D
++Increase the Debug Level.
++.TP
++.B \-i ifname
++Use interface ifname instead of the default "eth0".
++.TP
++.B \-p passwd
++Append a four or six byte password to the packet. Only very few adapters
++need or support this. The password may be also specified in ethernet hex
++format (00:22:44:66:88:aa) or dotted decimal (192.168.1.1).
++.SH SEE ALSO
++.BR arp (8).
++.br
++.SH KNOWN BUGS
++On some systems dropping root capability allows the process to be
++dumped, traced or debugged.
++If someone traces this program, they get control of a raw socket.
++Linux handles this safely, but beware when porting this program.
++.SH AUTHOR
++The ether\-wake program was written by Donald Becker at Scyld Computing
++Corporation.
++This manual page was formatted by Alain Schroeder
++from the on-line manual in the program.
++
diff --git a/system/base/net-tools/pspec.xml b/system/base/net-tools/pspec.xml
new file mode 100644
index 00000000..f7a05016
--- /dev/null
+++ b/system/base/net-tools/pspec.xml
@@ -0,0 +1,85 @@
+
+
+
+
+ net-tools
+ http://sites.inka.de/lina/linux/NetTools/
+
+