rpms/yap/devel chr_translate.pl, NONE, 1.1 chr_translate_bootstrap1.pl, NONE, 1.1 chr_translate_bootstrap2.pl, NONE, 1.1 guard_entailment.pl, NONE, 1.1 yap.spec, 1.9, 1.10
Gérard Milmeister (gemi)
fedora-extras-commits at redhat.com
Mon May 1 10:55:44 UTC 2006
Author: gemi
Update of /cvs/extras/rpms/yap/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv28266
Modified Files:
yap.spec
Added Files:
chr_translate.pl chr_translate_bootstrap1.pl
chr_translate_bootstrap2.pl guard_entailment.pl
Log Message:
new version 5.1.1
--- NEW FILE chr_translate.pl ---
/* Generated by CHR bootstrap compiler
From: chr_translate.chr
Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,50,58,49,51,32,50,48,48,54,10]
DO NOT EDIT. EDIT THE CHR FILE INSTEAD
*/
:-module(chr_translate,[chr_translate/2]).
:-use_module(chr_runtime).
:-style_check((-singleton)).
:-style_check((-discontiguous)).
:-use_module(library(lists)).
:-use_module(hprolog).
:-use_module(library(assoc)).
:-use_module(pairlist).
:-use_module(library(ordsets)).
:-use_module(a_star).
:-use_module(listmap).
:-use_module(clean_code).
:-use_module(builtins).
:-use_module(find).
:-use_module(guard_entailment).
:-use_module(chr_compiler_options).
:-use_module(chr_compiler_utility).
:-include(chr_op).
:-op(1150,fx,chr_type).
:-op(1130,xfx,--->).
:-op(1150,fx,+).
:-op(1150,fx,-).
:-op(1150,fx,?).
set_constraint_indices(A) :-
set_constraint_indices(A,1).
set_constraint_indices([],A) :-
B is A-1,
max_constraint_index(B).
set_constraint_indices([A|B],C) :-
(
(
chr_pp_flag(debugable,on)
;
may_trigger(A)
;
is_stored(A),
get_store_type(A,default)
) ->
constraint_index(A,C),
D is C+1,
set_constraint_indices(B,D)
;
set_constraint_indices(B,C)
).
chr_translate(A,B) :-
init_chr_pp_flags,
partition_clauses(A,C,D,E),
check_declared_constraints(C),
( C==[] ->
insert_declarations(E,B)
;
generate_show_constraint(C,F,D,G),
add_constraints(F),
add_rules(G),
check_rules(G,F),
add_occurrences(G),
functional_dependency_analysis(G),
set_semantics_rules(G),
symmetry_analysis(G),
guard_simplification,
storage_analysis(F),
observation_analysis(F),
ai_observation_analysis(F),
late_allocation(F),
assume_constraint_stores(F),
set_constraint_indices(F),
constraints_code(F,H),
validate_store_type_assumptions(F),
store_management_preds(F,I),
insert_declarations(E,J),
chr_module_declaration(K),
append_lists([J,I,H,K],B)
).
store_management_preds(A,B) :-
generate_attach_detach_a_constraint_all(A,C),
generate_indexed_variables_clauses(A,D),
generate_attach_increment(E),
generate_attr_unify_hook(F),
generate_extra_clauses(A,G),
generate_insert_delete_constraints(A,H),
generate_attach_code(A,I),
generate_counter_code(J),
append_lists([C,D,E,F,G,H,I,J],B).
insert_declarations(A,B) :-
append(A,[(:-use_module(chr(chr_runtime))),(:-use_module(chr(chr_hashtable_store))),(:-use_module(library('clp/clp_events')))],B).
generate_counter_code(A) :-
( chr_pp_flag(store_counter,on) ->
A=[('$counter_init'(B):-nb_setval(B,0)),('$counter'(C,D):-nb_getval(C,D)),('$counter_inc'(E):-nb_getval(E,F),G is F+1,nb_setval(E,G)),(:-'$counter_init'('$insert_counter')),(:-'$counter_init'('$delete_counter')),('$insert_counter_inc':-'$counter_inc'('$insert_counter')),('$delete_counter_inc':-'$counter_inc'('$delete_counter')),(counter_stats(H,I):-'$counter'('$insert_counter',H),'$counter'('$delete_counter',I))]
;
A=[]
).
chr_module_declaration(A) :-
get_target_module(B),
( B\==chr_translate ->
A=[(:-multifile chr:'$chr_module'/1),chr:'$chr_module'(B)]
;
A=[]
).
partition_clauses([],[],[],[]).
partition_clauses([A|B],C,D,E) :-
( parse_rule(A,F) ->
C=G,
D=[F|H],
E=I
;
( is_declaration(A,J) ->
append(J,G,C),
D=H,
E=I
)
;
( is_module_declaration(A,K) ->
target_module(K),
C=G,
D=H,
E=[A|I]
)
;
( is_type_definition(A) ->
C=G,
D=H,
E=I
)
;
( A=(handler _) ->
format('CHR compiler WARNING: ~w.
',[A]),
format(' `--> SICStus compatibility: ignoring handler/1 declaration.
',[]),
C=G,
D=H,
E=I
)
;
( A=(rules _) ->
format('CHR compiler WARNING: ~w.
',[A]),
format(' `--> SICStus compatibility: ignoring rules/1 declaration.
',[]),
C=G,
D=H,
E=I
)
;
( A=option(L,M) ->
handle_option(L,M),
C=G,
D=H,
E=I
)
;
C=G,
D=H,
E=[A|I]
),
partition_clauses(B,G,H,I).
is_declaration(A,B) :-
( A=(:-C) ->
true
;
A=C
),
C=..[constraints,D],
conj2list(D,E),
extract_type_mode(E,B).
extract_type_mode([],[]).
extract_type_mode([A/B|C],[A/B|D]) :-
!,
extract_type_mode(C,D).
extract_type_mode([A|B],[C|D]) :-
functor(A,E,F),
C=E/F,
A=..[_|G],
extract_types_and_modes(G,H,I),
constraint_type(E/F,H),
constraint_mode(E/F,I),
extract_type_mode(B,D).
extract_types_and_modes([],[],[]).
extract_types_and_modes([(+A)|B],[A|C],[+|D]) :-
!,
extract_types_and_modes(B,C,D).
extract_types_and_modes([(?A)|B],[A|C],[?|D]) :-
!,
extract_types_and_modes(B,C,D).
extract_types_and_modes([(-A)|B],[A|C],[?|D]) :-
!,
extract_types_and_modes(B,C,D).
extract_types_and_modes([A|_],_,_) :-
format('CHR compiler ERROR: Illegal mode/type declaration "~w".
',[A]),
format(' `--> correct syntax is +type, -type or ?type.
',[]),
[...8829 lines suppressed...]
;
true
)
;
'depends_on_goal/2__1__0'(G,A,B,C)
).
'depends_on_goal/2__1'(A,B,C) :-
allocate_constraint(true,C,depends_on_goal(A,B),[A,B]),
'depends_on_goal/2__2'(A,B,C).
'depends_on_goal/2__2'(_,_,A) :-
activate_constraint(B,_,A,_),
( B==yes ->
'$insert_in_store_depends_on_goal/2'(A)
;
true
).
ai_observed(A,B) :-
'$via1_multi_hash_ai_not_observed/2-1'(A,C),
!,
'ai_observed/2__0__0'(C,A,B).
'ai_observed/2__0__0'([],A,B) :-
'ai_observed/2__1'(A,B).
'ai_observed/2__0__0'([E|F],A,B) :-
( E=suspension(_,mutable(active),_,_,_,_,C,D),
C==A,
D==B ->
remove_constraint_internal(E,_,G),
( G==yes ->
'$delete_from_store_ai_not_observed/2'(E)
;
true
),
'ai_observed/2__0__0'(F,A,B)
;
'ai_observed/2__0__0'(F,A,B)
).
ai_observed(A,B) :-
'ai_observed/2__1'(A,B).
'ai_observed/2__1'(A,B) :-
'$via1_multi_hash_ai_observed/2-1'(A,E),
'chr sbag_member'(C,E),
C=suspension(_,mutable(active),_,_,_,_,_,D),
D=B,
!.
'ai_observed/2__1'(A,B) :-
insert_constraint_internal(_,_,C,true,ai_observed(A,B),[A,B]),
'$insert_in_store_ai_observed/2'(C).
ai_not_observed(A,B) :-
'ai_not_observed/2__0'(A,B,_).
'ai_not_observed/2__0'(A,B,C) :-
'$via1_multi_hash_stored/3-1'(A,D),
!,
allocate_constraint(true,C,ai_not_observed(A,B),[A,B]),
'ai_not_observed/2__0__0'(D,A,B,C).
'ai_not_observed/2__0__0'([],A,B,C) :-
'ai_not_observed/2__1'(A,B,C).
'ai_not_observed/2__0__0'([G|H],A,B,C) :-
( G=suspension(_,mutable(active),_,_,_,_,D,E,F),
D==A,
E==B,
F=yes,
'$via1_multi_hash_stored_complete/3-1'(A,L),
'chr sbag_member'(I,L),
I=suspension(_,mutable(active),_,_,_,_,_,J,K),
B<J ->
remove_constraint_internal(G,_,M),
( M==yes ->
'$delete_from_store_stored/3'(G)
;
true
),
remove_constraint_internal(I,_,N),
( N==yes ->
'$delete_from_store_stored_complete/3'(I)
;
true
),
activate_constraint(P,_,C,Q),
( P==yes ->
'$insert_in_store_ai_not_observed/2'(C)
;
true
),
O is K-1,
stored(A,B,maybe),
stored_complete(A,J,O),
( C=suspension(_,mutable(active),_,mutable(Q),_,_,_,_) ->
'chr update_mutable'(inactive,mutable(active)),
'ai_not_observed/2__0__0'(H,A,B,C)
;
true
)
;
'ai_not_observed/2__0__0'(H,A,B,C)
).
'ai_not_observed/2__0'(A,B,C) :-
allocate_constraint(true,C,ai_not_observed(A,B),[A,B]),
'ai_not_observed/2__1'(A,B,C).
'ai_not_observed/2__1'(A,B,C) :-
'$via1_multi_hash_ai_observed/2-1'(A,F),
'chr sbag_member'(D,F),
D=suspension(_,mutable(active),_,_,_,_,_,E),
E=B,
!,
( var(C) ->
true
;
remove_constraint_internal(C,_,G),
( G==yes ->
'$delete_from_store_ai_not_observed/2'(C)
;
true
)
).
'ai_not_observed/2__1'(A,B,C) :-
'$via1_multi_hash_ai_not_observed/2-1'(A,F),
'chr sbag_member'(D,F),
D=suspension(_,mutable(active),_,_,_,_,_,E),
E=B,
!,
( var(C) ->
true
;
remove_constraint_internal(C,_,G),
( G==yes ->
'$delete_from_store_ai_not_observed/2'(C)
;
true
)
).
'ai_not_observed/2__1'(_,_,A) :-
activate_constraint(B,_,A,_),
( B==yes ->
'$insert_in_store_ai_not_observed/2'(A)
;
true
).
ai_is_observed(A,B) :-
'$via1_multi_hash_ai_not_observed/2-1'(A,E),
'chr sbag_member'(C,E),
C=suspension(_,mutable(active),_,_,_,_,_,D),
D=B,
!,
fail.
ai_is_observed(_,_).
depends_on_as(A,B,C) :-
'depends_on_as/3__0'(A,B,C,_).
'depends_on_as/3__0'(A,B,C,D) :-
'$via1_multi_hash_final_answer_pattern/2-1'(B,E),
!,
allocate_constraint(true,D,depends_on_as(A,B,C),[A,B,C]),
'depends_on_as/3__0__0'(E,A,B,C,D).
'depends_on_as/3__0__0'([],A,B,C,D) :-
'depends_on_as/3__1'(A,B,C,D).
'depends_on_as/3__0__0'([G|I],A,B,C,D) :-
( G=suspension(_,mutable(active),_,_,_,_,E,F),
E==B,
'$via1_multi_hash_final_answer_pattern/2-1'(C,H) ->
'depends_on_as/3__0__1'(H,F,G,I,A,B,C,D)
;
'depends_on_as/3__0__0'(I,A,B,C,D)
).
'depends_on_as/3__0__1'([],_,_,E,A,B,C,D) :-
'depends_on_as/3__0__0'(E,A,B,C,D).
'depends_on_as/3__0__1'([J|K],F,A,G,B,C,D,E) :-
( J=suspension(_,mutable(active),_,_,_,_,H,I),
J\==A,
H==D,
O=t(141,E,A,J),
'chr novel_production'(E,O),
'chr novel_production'(A,O),
'chr novel_production'(J,O) ->
'chr extend_history'(E,O),
activate_constraint(M,_,E,N),
( M==yes ->
'$insert_in_store_depends_on_as/3'(E)
;
true
),
ai_observation_lub(F,I,L),
final_answer_pattern(B,L),
( E=suspension(_,mutable(active),_,mutable(N),_,_,_,_,_) ->
'chr update_mutable'(inactive,mutable(active)),
'depends_on_as/3__0__1'(K,F,A,G,B,C,D,E)
;
true
)
;
'depends_on_as/3__0__1'(K,F,A,G,B,C,D,E)
).
'depends_on_as/3__0'(A,B,C,D) :-
allocate_constraint(true,D,depends_on_as(A,B,C),[A,B,C]),
'depends_on_as/3__1'(A,B,C,D).
'depends_on_as/3__1'(_,_,_,A) :-
activate_constraint(B,_,A,_),
( B==yes ->
'$insert_in_store_depends_on_as/3'(A)
;
true
).
--- NEW FILE chr_translate_bootstrap1.pl ---
/* Generated by CHR bootstrap compiler
From: chr_translate_bootstrap1.chr
Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,49,58,51,51,32,50,48,48,54,10]
DO NOT EDIT. EDIT THE CHR FILE INSTEAD
*/
:-module(chr_translate_bootstrap1,[chr_translate/2]).
:-use_module(chr_runtime).
:-style_check(-singleton).
:-style_check(-discontiguous).
:-use_module(library(lists)).
:-use_module(hprolog).
:-use_module(library(assoc)).
:-use_module(pairlist).
:-use_module(library(ordsets)).
:-include(chr_op2).
chr_translate(A,B) :-
init_chr_pp_flags,
partition_clauses(A,C,D,E),
( C==[] ->
B=E
;
check_rules(D,C),
unique_analyse_optimise(D,F),
check_attachments(F),
set_constraint_indices(C,1),
store_management_preds(C,G),
constraints_code(C,F,H),
append_lists([E,G,H],B)
),
chr_clear.
store_management_preds(A,B) :-
generate_attach_detach_a_constraint_all(A,C),
generate_attach_increment(D),
generate_attr_unify_hook(E),
append_lists([C,D,E],B).
partition_clauses([],[],[],[]).
partition_clauses([A|B],C,D,E) :-
( rule(A,F) ->
C=G,
D=[F|H],
E=I
;
( is_declaration(A,J) ->
append(J,G,C),
D=H,
E=I
)
;
( is_module_declaration(A,K) ->
target_module(K),
C=G,
D=H,
E=[A|I]
)
;
( A=(handler _) ->
format('CHR compiler WARNING: ~w.
',[A]),
format(' `--> SICStus compatibility: ignoring handler/1 declaration.
',[]),
C=G,
D=H,
E=I
)
;
( A=(rules _) ->
format('CHR compiler WARNING: ~w.
',[A]),
format(' `--> SICStus compatibility: ignoring rules/1 declaration.
',[]),
C=G,
D=H,
E=I
)
;
( A=option(L,M) ->
handle_option(L,M),
C=G,
D=H,
E=I
)
;
C=G,
D=H,
E=[A|I]
),
partition_clauses(B,G,H,I).
is_declaration(A,B) :-
( A=(:-C) ->
true
;
A=C
),
C=..[constraints,D],
conj2list(D,B).
rule(A,B) :-
A=(C at D),
!,
rule(D,yes(C),B).
rule(A,B) :-
rule(A,no,B).
rule(A,B,C) :-
A=(D pragma E),
!,
is_rule(D,F,G),
conj2list(E,H),
C=pragma(F,G,H,B).
rule(A,B,C) :-
is_rule(A,D,E),
C=pragma(D,E,[],B).
is_rule(A,B,C) :-
A=(D==>E),
!,
conj2list(D,F),
get_ids(F,G,H),
C=ids([],G),
( E=(I '|' J) ->
B=rule([],H,I,J)
;
B=rule([],H,true,E)
).
is_rule(A,B,C) :-
A=(D<=>E),
!,
( E=(F '|' G) ->
H=F,
I=G
;
H=true,
I=E
),
( D=(J\K) ->
conj2list(J,L),
conj2list(K,M),
get_ids(L,N,O,0,P),
get_ids(M,Q,R,P,_),
C=ids(Q,N)
;
conj2list(D,M),
O=[],
get_ids(M,Q,R),
C=ids(Q,[])
),
B=rule(R,O,H,I).
get_ids(A,B,C) :-
get_ids(A,B,C,0,_).
get_ids([],[],[],A,A).
get_ids([A|B],[C|D],[E|F],C,G) :-
( A=E#C ->
true
;
E=A
),
H is C+1,
get_ids(B,D,F,H,G).
is_module_declaration((:-module(A)),A).
is_module_declaration((:-module(A,_)),A).
check_rules(A,B) :-
check_rules(A,B,1).
check_rules([],_,_).
check_rules([A|B],C,D) :-
check_rule(A,C,D),
E is D+1,
check_rules(B,C,E).
check_rule(A,B,C) :-
A=pragma(D,_,E,_),
D=rule(F,G,_,_),
append(F,G,H),
check_head_constraints(H,B,A,C),
check_pragmas(E,A,C).
check_head_constraints([],_,_,_).
check_head_constraints([A|B],C,D,E) :-
functor(A,F,G),
( member(F/G,C) ->
check_head_constraints(B,C,D,E)
;
format('CHR compiler ERROR: Undeclared constraint ~w in head of ~@.
',[F/G,format_rule(D,E)]),
format(' `--> Constraint should be on of ~w.
',[C]),
fail
).
check_pragmas([],_,_).
check_pragmas([A|B],C,D) :-
check_pragma(A,C,D),
check_pragmas(B,C,D).
check_pragma(A,B,C) :-
var(A),
!,
format('CHR compiler ERROR: invalid pragma ~w in ~@.
',[A,format_rule(B,C)]),
format(' `--> Pragma should not be a variable!
',[]),
fail.
check_pragma(passive(A),B,C) :-
!,
B=pragma(_,ids(D,E),_,_),
[...2192 lines suppressed...]
'detach_attached/2'(K,B)
).
'attached/2__1'(A,B,C) :-
B==no,
'chr via_1'(A,D),
get_attr(D,chr_translate_bootstrap1,E),
E=v(G,_,_,_,_,_,F),
G/\32=:=32,
!,
'attached/2__1__0'(F,A,B,C).
'attached/2__1__0'([],A,B,C) :-
'attached/2__2'(A,B,C).
'attached/2__1__0'([D|E],A,B,C) :-
( D=suspension(_,G,_,_,_,_,F,_),
G=mutable(active),
F==A ->
'chr remove_constraint_internal'(D,H),
'detach_attached/2'(H,D),
'attached/2__1__0'(E,A,B,C)
;
'attached/2__1__0'(E,A,B,C)
).
'attached/2__1'(A,B,C) :-
'attached/2__2'(A,B,C).
'attached/2__2'(A,B,C) :-
B==maybe,
'chr via_1'(A,E),
get_attr(E,chr_translate_bootstrap1,F),
F=v(K,_,_,_,_,_,J),
K/\32=:=32,
( 'chr sbag_member'(D,J),
D=suspension(_,I,_,_,_,_,G,H),
I=mutable(active),
G==A,
H==maybe ->
true
),
!,
( var(C) ->
true
;
'chr remove_constraint_internal'(C,L),
'detach_attached/2'(L,C)
).
'attached/2__2'(_,_,A) :-
'chr activate_constraint'(B,A,_),
'attach_attached/2'(B,A).
is_attached(A) :-
'is_attached/1__0'(A,_).
'is_attached/1__0'(A,_) :-
'chr via_1'(A,C),
get_attr(C,chr_translate_bootstrap1,D),
D=v(I,_,_,_,_,_,H),
I/\32=:=32,
'chr sbag_member'(B,H),
B=suspension(_,G,_,_,_,_,E,F),
G=mutable(active),
E==A,
!,
( F==no ->
fail
;
true
).
'is_attached/1__0'(_,_) :-
!.
chr_clear :-
'chr_clear/0__0'(_).
'chr_clear/0__0'(A) :-
'chr global_term_ref_1'(B),
get_attr(B,chr_translate_bootstrap1,C),
C=v(E,D,_,_,_,_,_),
E/\1=:=1,
!,
( var(A) ->
'chr allocate_constraint'(chr_translate_bootstrap1:'chr_clear/0__0'(A),A,chr_clear,[])
;
true
),
'chr_clear/0__0__0'(D,A).
'chr_clear/0__0__0'([],A) :-
'chr_clear/0__1'(A).
'chr_clear/0__0__0'([B|C],A) :-
( B=suspension(_,D,_,_,_,_,_,_),
D=mutable(active) ->
'chr remove_constraint_internal'(B,E),
'detach_constraint/2'(E,B),
'chr_clear/0__0__0'(C,A)
;
'chr_clear/0__0__0'(C,A)
).
'chr_clear/0__0'(A) :-
( var(A) ->
'chr allocate_constraint'(chr_translate_bootstrap1:'chr_clear/0__0'(A),A,chr_clear,[])
;
true
),
'chr_clear/0__1'(A).
'chr_clear/0__1'(A) :-
'chr global_term_ref_1'(B),
get_attr(B,chr_translate_bootstrap1,C),
C=v(E,_,D,_,_,_,_),
E/\2=:=2,
!,
'chr_clear/0__1__0'(D,A).
'chr_clear/0__1__0'([],A) :-
'chr_clear/0__2'(A).
'chr_clear/0__1__0'([B|C],A) :-
( B=suspension(_,D,_,_,_,_,_),
D=mutable(active) ->
'chr remove_constraint_internal'(B,E),
'detach_constraint_count/1'(E,B),
'chr_clear/0__1__0'(C,A)
;
'chr_clear/0__1__0'(C,A)
).
'chr_clear/0__1'(A) :-
'chr_clear/0__2'(A).
'chr_clear/0__2'(A) :-
'chr global_term_ref_1'(B),
get_attr(B,chr_translate_bootstrap1,C),
C=v(E,_,_,D,_,_,_),
E/\4=:=4,
!,
'chr_clear/0__2__0'(D,A).
'chr_clear/0__2__0'([],A) :-
'chr_clear/0__3'(A).
'chr_clear/0__2__0'([B|C],A) :-
( B=suspension(_,D,_,_,_,_,_,_),
D=mutable(active) ->
'chr remove_constraint_internal'(B,E),
'detach_constraint_index/2'(E,B),
'chr_clear/0__2__0'(C,A)
;
'chr_clear/0__2__0'(C,A)
).
'chr_clear/0__2'(A) :-
'chr_clear/0__3'(A).
'chr_clear/0__3'(A) :-
'chr global_term_ref_1'(B),
get_attr(B,chr_translate_bootstrap1,C),
C=v(E,_,_,_,D,_,_),
E/\8=:=8,
!,
'chr_clear/0__3__0'(D,A).
'chr_clear/0__3__0'([],A) :-
'chr_clear/0__4'(A).
'chr_clear/0__3__0'([B|C],A) :-
( B=suspension(_,D,_,_,_,_,_),
D=mutable(active) ->
'chr remove_constraint_internal'(B,E),
'detach_max_constraint_index/1'(E,B),
'chr_clear/0__3__0'(C,A)
;
'chr_clear/0__3__0'(C,A)
).
'chr_clear/0__3'(A) :-
'chr_clear/0__4'(A).
'chr_clear/0__4'(A) :-
'chr global_term_ref_1'(B),
get_attr(B,chr_translate_bootstrap1,C),
C=v(E,_,_,_,_,D,_),
E/\16=:=16,
!,
'chr_clear/0__4__0'(D,A).
'chr_clear/0__4__0'([],A) :-
'chr_clear/0__5'(A).
'chr_clear/0__4__0'([B|C],A) :-
( B=suspension(_,D,_,_,_,_,_),
D=mutable(active) ->
'chr remove_constraint_internal'(B,E),
'detach_target_module/1'(E,B),
'chr_clear/0__4__0'(C,A)
;
'chr_clear/0__4__0'(C,A)
).
'chr_clear/0__4'(A) :-
'chr_clear/0__5'(A).
'chr_clear/0__5'(A) :-
'chr global_term_ref_1'(B),
get_attr(B,chr_translate_bootstrap1,C),
C=v(E,_,_,_,_,_,D),
E/\32=:=32,
!,
'chr_clear/0__5__0'(D,A).
'chr_clear/0__5__0'([],A) :-
'chr_clear/0__6'(A).
'chr_clear/0__5__0'([B|C],A) :-
( B=suspension(_,D,_,_,_,_,_,_),
D=mutable(active) ->
'chr remove_constraint_internal'(B,E),
'detach_attached/2'(E,B),
'chr_clear/0__5__0'(C,A)
;
'chr_clear/0__5__0'(C,A)
).
'chr_clear/0__5'(A) :-
'chr_clear/0__6'(A).
'chr_clear/0__6'(_) :-
!.
--- NEW FILE chr_translate_bootstrap2.pl ---
/* Generated by CHR bootstrap compiler
From: chr_translate_bootstrap2.chr
Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,49,58,51,55,32,50,48,48,54,10]
DO NOT EDIT. EDIT THE CHR FILE INSTEAD
*/
:-module(chr_translate,[chr_translate/2]).
:-use_module(chr_runtime).
:-style_check(-singleton).
:-style_check(-discontiguous).
:-use_module(chr_runtime).
:-use_module(chr_hashtable_store).
:-style_check(-singleton).
:-style_check(-discontiguous).
:-use_module(library(lists)).
:-use_module(hprolog).
:-use_module(library(assoc)).
:-use_module(pairlist).
:-use_module(library(ordsets)).
:-use_module(a_star).
:-use_module(clean_code).
:-use_module(builtins).
:-use_module(find).
:-include(chr_op2).
chr_translate(A,B) :-
init_chr_pp_flags,
partition_clauses(A,C,D,E),
( C==[] ->
insert_declarations(E,B)
;
add_rules(D),
check_rules(D,C),
add_occurrences(D),
late_allocation(C),
unique_analyse_optimise(D,F),
check_attachments(C),
assume_constraint_stores(C),
set_constraint_indices(C,1),
constraints_code(C,F,G),
validate_store_type_assumptions(C),
store_management_preds(C,H),
insert_declarations(E,I),
chr_module_declaration(J),
append_lists([I,H,G,J],B)
).
store_management_preds(A,B) :-
generate_attach_detach_a_constraint_all(A,C),
generate_indexed_variables_clauses(A,D),
generate_attach_increment(E),
generate_attr_unify_hook(F),
generate_extra_clauses(A,G),
generate_insert_delete_constraints(A,H),
generate_store_code(A,I),
append_lists([C,D,E,F,G,H,I],B).
insert_declarations(A,B) :-
( A=[(:-module(C,D))|E] ->
B=[(:-module(C,D)),(:-use_module(chr_runtime)),(:-use_module(chr_hashtable_store)),(:-style_check(-singleton)),(:-style_check(-discontiguous))|E]
;
B=[(:-use_module(chr_runtime)),(:-use_module(chr_hashtable_store)),(:-style_check(-singleton)),(:-style_check(-discontiguous))|A]
).
chr_module_declaration(A) :-
get_target_module(B),
( B\==chr_translate ->
A=[(:-multifile chr:'$chr_module'/1),chr:'$chr_module'(B)]
;
A=[]
).
partition_clauses([],[],[],[]).
partition_clauses([A|B],C,D,E) :-
( parse_rule(A,F) ->
C=G,
D=[F|H],
E=I
;
( is_declaration(A,J) ->
append(J,G,C),
D=H,
E=I
)
;
( is_module_declaration(A,K) ->
target_module(K),
C=G,
D=H,
E=[A|I]
)
;
( A=(handler _) ->
format('CHR compiler WARNING: ~w.
',[A]),
format(' `--> SICStus compatibility: ignoring handler/1 declaration.
',[]),
C=G,
D=H,
E=I
)
;
( A=(rules _) ->
format('CHR compiler WARNING: ~w.
',[A]),
format(' `--> SICStus compatibility: ignoring rules/1 declaration.
',[]),
C=G,
D=H,
E=I
)
;
( A=option(L,M) ->
handle_option(L,M),
C=G,
D=H,
E=I
)
;
C=G,
D=H,
E=[A|I]
),
partition_clauses(B,G,H,I).
is_declaration(A,B) :-
( A=(:-C) ->
true
;
A=C
),
C=..[constraints,D],
conj2list(D,B).
parse_rule(A,B) :-
A=(C at D),
!,
rule(D,yes(C),B).
parse_rule(A,B) :-
rule(A,no,B).
rule(A,B,C) :-
A=(D pragma E),
!,
is_rule(D,F,G),
conj2list(E,H),
inc_rule_count(I),
C=pragma(F,G,H,B,I).
rule(A,B,C) :-
is_rule(A,D,E),
inc_rule_count(F),
C=pragma(D,E,[],B,F).
is_rule(A,B,C) :-
A=(D==>E),
!,
conj2list(D,F),
get_ids(F,G,H),
C=ids([],G),
( E=(I '|' J) ->
B=rule([],H,I,J)
;
B=rule([],H,true,E)
).
is_rule(A,B,C) :-
A=(D<=>E),
!,
( E=(F '|' G) ->
H=F,
I=G
;
H=true,
I=E
),
( D=(J\K) ->
conj2list(J,L),
conj2list(K,M),
get_ids(L,N,O,0,P),
get_ids(M,Q,R,P,_),
C=ids(Q,N)
;
conj2list(D,M),
O=[],
get_ids(M,Q,R),
C=ids(Q,[])
),
B=rule(R,O,H,I).
get_ids(A,B,C) :-
get_ids(A,B,C,0,_).
get_ids([],[],[],A,A).
get_ids([A|B],[C|D],[E|F],C,G) :-
( A=E#C ->
true
;
E=A
),
H is C+1,
get_ids(B,D,F,H,G).
is_module_declaration((:-module(A)),A).
is_module_declaration((:-module(A,_)),A).
add_rules([]).
add_rules([A|B]) :-
A=pragma(_,_,_,_,C),
rule(C,A),
add_rules(B).
check_rules([],_).
check_rules([A|B],C) :-
[...3285 lines suppressed...]
E==A ->
true
),
!,
B=F.
'get_max_occurrence/2__0'(_,A,_) :-
!,
A=0.
allocation_occurrence(A,B) :-
'allocation_occurrence/2__0'(A,B,_).
'allocation_occurrence/2__0'(A,B,_) :-
'$via1_multi_hash_occurrence/4-1'(A,I),
nb_getval('$chr_store_global_ground_chr_translate:rule/2',D),
'chr sbag_member'(C,D),
C=suspension(_,G,_,_,_,_,E,F),
G=mutable(active),
'chr sbag_member'(H,I),
H=suspension(_,N,_,_,_,_,J,K,L,M),
N=mutable(active),
J==A,
K==B,
L==E,
'chr lock'(F),
'chr lock'(M),
F=pragma(_,ids(_,_),_,_,_),
member(M,_),
'chr unlock'(F),
'chr unlock'(M),
!,
O is B+1,
allocation_occurrence(A,O).
'allocation_occurrence/2__0'(A,B,_) :-
'$via1_multi_hash_occurrence/4-1'(A,I),
nb_getval('$chr_store_global_ground_chr_translate:rule/2',D),
'chr sbag_member'(C,D),
C=suspension(_,G,_,_,_,_,E,F),
G=mutable(active),
'chr sbag_member'(H,I),
H=suspension(_,M,_,_,_,_,J,K,L,_),
M=mutable(active),
J==A,
K==B,
L==E,
'chr lock'(F),
F=pragma(rule(_,_,_,true),_,_,_,_),
'chr unlock'(F),
!,
N is B+1,
allocation_occurrence(A,N).
'allocation_occurrence/2__0'(A,B,_) :-
'$via1_multi_hash_occurrence/4-1'(A,D),
'chr sbag_member'(C,D),
C=suspension(_,I,_,_,_,_,E,F,G,H),
I=mutable(active),
E==A,
F==B,
'$via1_multi_hash_passive/2-1'(G,K),
'chr sbag_member'(J,K),
J=suspension(_,N,_,_,_,_,L,M),
N=mutable(active),
L==G,
M==H,
!,
O is B+1,
allocation_occurrence(A,O).
'allocation_occurrence/2__0'(A,B,C) :-
insert_constraint_internal(_,_,C,chr_translate:'allocation_occurrence/2__0'(A,B,C),allocation_occurrence(A,B),[A,B]),
'$insert_in_store_allocation_occurrence/2'(C).
get_allocation_occurrence(A,B) :-
'get_allocation_occurrence/2__0'(A,B,_).
'get_allocation_occurrence/2__0'(A,B,_) :-
'$via1_multi_hash_allocation_occurrence/2-1'(A,D),
'chr sbag_member'(C,D),
C=suspension(_,G,_,_,_,_,E,F),
G=mutable(active),
E==A,
!,
B=F.
'get_allocation_occurrence/2__0'(_,_,_) :-
!,
fail.
rule(A,B) :-
'rule/2__0'(A,B,_).
'rule/2__0'(A,B,C) :-
nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D),
!,
allocate_constraint(chr_translate:'rule/2__0'(A,B,C),C,rule(A,B),[A,B]),
'rule/2__0__0'(D,A,B,C).
'rule/2__0__0'([],A,B,C) :-
'rule/2__1'(A,B,C).
'rule/2__0__0'([D|E],A,B,C) :-
( D=suspension(_,H,_,_,_,_,F,G),
H=mutable(active),
'$via1_multi_hash_occurrence/4-1'(F,J),
'chr sbag_member'(I,J),
I=suspension(_,O,_,_,_,_,K,L,M,N),
O=mutable(active),
K==F,
L==G,
M==A,
'chr lock'(B),
'chr lock'(N),
B=pragma(_,ids(_,_),_,_,_),
member(N,_),
'chr unlock'(B),
'chr unlock'(N) ->
remove_constraint_internal(D,_,P),
( P==yes ->
'$delete_from_store_allocation_occurrence/2'(D)
;
true
),
activate_constraint(R,_,C,S),
( R==yes ->
'$insert_in_store_rule/2'(C)
;
true
),
Q is G+1,
allocation_occurrence(F,Q),
( C=suspension(_,T,_,U,_,_,_,_),
T=mutable(active),
U=mutable(S) ->
'chr update_mutable'(inactive,T),
'rule/2__0__0'(E,A,B,C)
;
true
)
;
'rule/2__0__0'(E,A,B,C)
).
'rule/2__0'(A,B,C) :-
allocate_constraint(chr_translate:'rule/2__0'(A,B,C),C,rule(A,B),[A,B]),
'rule/2__1'(A,B,C).
'rule/2__1'(A,B,C) :-
nb_getval('$chr_store_global_ground_chr_translate:allocation_occurrence/2',D),
!,
'rule/2__1__0'(D,A,B,C).
'rule/2__1__0'([],A,B,C) :-
'rule/2__2'(A,B,C).
'rule/2__1__0'([D|E],A,B,C) :-
( D=suspension(_,H,_,_,_,_,F,G),
H=mutable(active),
'$via1_multi_hash_occurrence/4-1'(F,J),
'chr sbag_member'(I,J),
I=suspension(_,N,_,_,_,_,K,L,M,_),
N=mutable(active),
K==F,
L==G,
M==A,
'chr lock'(B),
B=pragma(rule(_,_,_,true),_,_,_,_),
'chr unlock'(B) ->
remove_constraint_internal(D,_,O),
( O==yes ->
'$delete_from_store_allocation_occurrence/2'(D)
;
true
),
activate_constraint(Q,_,C,R),
( Q==yes ->
'$insert_in_store_rule/2'(C)
;
true
),
P is G+1,
allocation_occurrence(F,P),
( C=suspension(_,S,_,T,_,_,_,_),
S=mutable(active),
T=mutable(R) ->
'chr update_mutable'(inactive,S),
'rule/2__1__0'(E,A,B,C)
;
true
)
;
'rule/2__1__0'(E,A,B,C)
).
'rule/2__1'(A,B,C) :-
'rule/2__2'(A,B,C).
'rule/2__2'(_,_,A) :-
activate_constraint(B,_,A,_),
( B==yes ->
'$insert_in_store_rule/2'(A)
;
true
).
get_rule(A,B) :-
'get_rule/2__0'(A,B,_).
'get_rule/2__0'(A,B,_) :-
'$via1_multi_hash_rule/2-1'(A,D),
'chr sbag_member'(C,D),
C=suspension(_,G,_,_,_,_,E,F),
G=mutable(active),
E==A,
!,
B=F.
'get_rule/2__0'(_,_,_) :-
!,
fail.
--- NEW FILE guard_entailment.pl ---
/* Generated by CHR bootstrap compiler
From: guard_entailment.chr
Date: [77,111,110,32,77,97,121,32,32,49,32,49,50,58,50,49,58,53,55,32,50,48,48,54,10]
DO NOT EDIT. EDIT THE CHR FILE INSTEAD
*/
:-module(guard_entailment,[entails_guard/2,simplify_guards/5]).
:-use_module(chr_runtime).
:-style_check((-singleton)).
:-style_check((-discontiguous)).
:-use_module(library(lists)).
:-use_module(hprolog).
:-use_module(builtins).
entails_guard(A,B) :-
copy_term_nat((A,B),(C,D)),
term_variables(C,E),
variables(E),
entails_guard2(C),
!,
test(D),
!,
cleanup.
entails_guard2([]).
entails_guard2([A|B]) :-
known(A),
entails_guard2(B).
simplify_guards(A,B,C,D,E) :-
copy_term_nat((A,C),(F,G)),
term_variables(F,H),
variables(H),
entails_guard2(F),
!,
simplify(G,I),
simplified(C,I,D,B,E),
!,
cleanup.
simplified([],[],[],A,A).
simplified([A|B],[keep|C],[A|D],E,F) :-
simplified(B,C,D,E,F).
simplified([_|_],[fail|_],fail,A,A).
simplified([A|B],[true|C],[D|E],F,G) :-
builtins:binds_b(A,H),
term_variables(B,I),
intersect_eq(H,I,J),
!,
( J=[] ->
term_variables(F,K),
intersect_eq(H,K,L),
!,
( L=[] ->
D=true,
G=M
;
D=true,
G=(A,M)
)
;
D=A,
G=M
),
simplified(B,C,E,F,M).
simplify([],[]).
simplify([A|B],[C|D]) :-
( \+try(true,A) ->
C=true
;
builtins:negate_b(A,E),
( \+try(true,E) ->
C=fail
;
C=keep
)
),
known(A),
simplify(B,D).
try(A,B) :-
( known(A) ->
true
;
format(' ERROR: entailment checker: this is not supposed to happen.
',[])
),
( test(B) ->
fail
;
true
).
lookup([],[],_,_) :-
fail.
lookup([A|B],[C|D],E,F) :-
( E==A ->
F=C
;
lookup(B,D,E,F)
).
add_args_unif([],[],true).
add_args_unif([A|B],[C|D],(A=C,E)) :-
add_args_unif(B,D,E).
add_args_nunif([],[],fail).
add_args_nunif([A|B],[C|D],(A\=C;E)) :-
add_args_nunif(B,D,E).
add_args_nmatch([],[],fail).
add_args_nmatch([A|B],[C|D],(A\==C;E)) :-
add_args_nmatch(B,D,E).
all_unique_vars(A,B) :-
all_unique_vars(A,B,[]).
all_unique_vars([],_,_).
all_unique_vars([A|B],C,D) :-
var(A),
\+memberchk_eq(A,C),
\+memberchk_eq(A,D),
all_unique_vars(B,[A|D]).
:-use_module(chr(chr_runtime)).
:-use_module(chr(chr_hashtable_store)).
:-use_module(library('clp/clp_events')).
'attach_known/1'([],_).
'attach_known/1'([A|B],C) :-
( get_attr(A,guard_entailment,H) ->
H=v(F,D,E),
( F/\1=:=1 ->
put_attr(A,guard_entailment,v(F,[C|D],E))
;
G is F\/1,
put_attr(A,guard_entailment,v(G,[C],E))
)
;
put_attr(A,guard_entailment,v(1,[C],[]))
),
true,
'attach_known/1'(B,C).
'detach_known/1'([],_).
'detach_known/1'([A|B],C) :-
( get_attr(A,guard_entailment,I) ->
I=v(F,D,E),
( F/\1=:=1 ->
'chr sbag_del_element'(D,C,H),
( H==[] ->
G is F/\ -2,
( G==0 ->
del_attr(A,guard_entailment)
;
put_attr(A,guard_entailment,v(G,[],E))
)
;
put_attr(A,guard_entailment,v(F,H,E))
)
;
true
)
;
true
),
'detach_known/1'(B,C).
'attach_variables/1'([],_).
'attach_variables/1'([A|B],C) :-
( get_attr(A,guard_entailment,H) ->
H=v(F,D,E),
( F/\2=:=2 ->
put_attr(A,guard_entailment,v(F,D,[C|E]))
;
G is F\/2,
put_attr(A,guard_entailment,v(G,D,[C]))
)
;
put_attr(A,guard_entailment,v(2,[],[C]))
),
true,
'attach_variables/1'(B,C).
'detach_variables/1'([],_).
'detach_variables/1'([A|B],C) :-
( get_attr(A,guard_entailment,I) ->
I=v(F,D,E),
( F/\2=:=2 ->
'chr sbag_del_element'(E,C,H),
( H==[] ->
G is F/\ -3,
( G==0 ->
del_attr(A,guard_entailment)
;
put_attr(A,guard_entailment,v(G,D,[]))
)
;
put_attr(A,guard_entailment,v(F,D,H))
)
;
true
)
;
true
),
'detach_variables/1'(B,C).
'$indexed_variables'(B,A) :-
B=known(_),
term_variables(B,A).
'$indexed_variables'(B,A) :-
B=variables(_),
term_variables(B,A).
attach_increment([],_).
[...3131 lines suppressed...]
B=functor(C,_,_),
nonvar(C),
!.
test(A) :-
nonvar(A),
A=(\+B),
nonvar(B),
B=ground(C),
ground(C),
!,
fail.
test(A) :-
nonvar(A),
A=(\+B),
nonvar(B),
B=number(C),
number(C),
!,
fail.
test(A) :-
nonvar(A),
A=(\+B),
nonvar(B),
B=float(C),
float(C),
!,
fail.
test(A) :-
nonvar(A),
A=(\+B),
nonvar(B),
B=integer(C),
integer(C),
!,
fail.
test(A) :-
nonvar(A),
A=(\+B),
nonvar(B),
B=number(C),
nonvar(C),
!.
test(A) :-
nonvar(A),
A=(\+B),
nonvar(B),
B=float(C),
nonvar(C),
!.
test(A) :-
nonvar(A),
A=(\+B),
nonvar(B),
B=integer(C),
nonvar(C),
!.
test(A) :-
nonvar(A),
A=(B,C),
!,
test(B),
known(B),
test(C).
test(A) :-
nonvar(A),
A=(B;C),
!,
negate_b(B,D),
negate_b(C,E),
(
known(E),
test(B)
;
known(D),
test(C)
).
test(A) :-
'chr global_term_ref_1'(D),
get_attr(D,guard_entailment,E),
E=v(G,F,_),
G/\1=:=1,
'chr sbag_member'(B,F),
B=suspension(_,mutable(active),_,_,_,_,C),
nonvar(C),
C=(H;I),
!,
remove_constraint_internal(B,K,L),
( L==yes ->
'$delete_from_store_known/1'(B),
'detach_known/1'(K,B)
;
true
),
\+try(H,A),
!,
negate_b(H,J),
known(J),
\+try(I,A).
test(_) :-
fail.
cleanup :-
'chr global_term_ref_1'(A),
get_attr(A,guard_entailment,B),
B=v(D,C,_),
D/\1=:=1,
!,
'cleanup/0__0__0'(C).
'cleanup/0__0__0'([]) :-
'cleanup/0__1'.
'cleanup/0__0__0'([A|B]) :-
( A=suspension(_,mutable(active),_,_,_,_,_) ->
remove_constraint_internal(A,C,D),
( D==yes ->
'$delete_from_store_known/1'(A),
'detach_known/1'(C,A)
;
true
),
'cleanup/0__0__0'(B)
;
'cleanup/0__0__0'(B)
).
cleanup :-
'cleanup/0__1'.
'cleanup/0__1' :-
'chr global_term_ref_1'(A),
get_attr(A,guard_entailment,B),
B=v(D,_,C),
D/\2=:=2,
!,
'cleanup/0__1__0'(C).
'cleanup/0__1__0'([]) :-
'cleanup/0__2'.
'cleanup/0__1__0'([A|B]) :-
( A=suspension(_,mutable(active),_,_,_,_,_) ->
remove_constraint_internal(A,C,D),
( D==yes ->
'$delete_from_store_variables/1'(A),
'detach_variables/1'(C,A)
;
true
),
'cleanup/0__1__0'(B)
;
'cleanup/0__1__0'(B)
).
'cleanup/0__1' :-
'cleanup/0__2'.
'cleanup/0__2'.
variables(A) :-
'variables/1__0'(A,_).
'variables/1__0'(A,B) :-
'chr global_term_ref_1'(E),
get_attr(E,guard_entailment,F),
F=v(H,G,_),
H/\1=:=1,
'chr sbag_member'(C,G),
C=suspension(_,mutable(active),_,_,_,_,D),
nonvar(D),
D=functor(I,J,K),
ground(K),
ground(J),
var(I),
!,
remove_constraint_internal(C,N,O),
( O==yes ->
'$delete_from_store_known/1'(C),
'detach_known/1'(N,C)
;
true
),
( var(B) ->
true
;
remove_constraint_internal(B,P,Q),
( Q==yes ->
'$delete_from_store_variables/1'(B),
'detach_variables/1'(P,B)
;
true
)
),
functor(I,J,K),
I=..[_|L],
append(L,A,M),
variables(M).
'variables/1__0'(A,B) :-
( var(B) ->
insert_constraint_internal(D,C,B,guard_entailment:'variables/1__0'(A,B),variables(A),[A])
;
activate_constraint(D,C,B,_)
),
( D==yes ->
'$insert_in_store_variables/1'(B),
'attach_variables/1'(C,B)
;
true
).
:-multifile chr:'$chr_module'/1.
chr:'$chr_module'(guard_entailment).
Index: yap.spec
===================================================================
RCS file: /cvs/extras/rpms/yap/devel/yap.spec,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- yap.spec 17 Feb 2006 21:42:57 -0000 1.9
+++ yap.spec 1 May 2006 10:55:44 -0000 1.10
@@ -1,12 +1,16 @@
Name: yap
-Version: 5.0.1
-Release: 2%{?dist}
+Version: 5.1.1
+Release: 1%{?dist}
Summary: High-performance Prolog Compiler
Group: Development/Languages
License: Artistic/LGPL
-Source: http://www.ncc.up.pt/~vsc/Yap/current/Yap-5.0.1.tar.gz
+Source: http://www.ncc.up.pt/~vsc/Yap/current/Yap-5.1.1.tar.gz
+Source1: guard_entailment.pl
+Source2: chr_translate_bootstrap1.pl
+Source3: chr_translate_bootstrap2.pl
+Source4: chr_translate.pl
Patch1: Yap-noni386.patch
URL: http://www.ncc.up.pt/~vsc/Yap
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -21,9 +25,29 @@
follows the Edinburgh tradition, and is largely compatible with the
ISO-Prolog standard and with Quintus and SICStus Prolog.
+
+%package devel
+Summary: C-Interface development files for Yap
+Group: Development/Languages
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+C-Interface development files for Yap.
+
+
+%package docs
+Summary: Documentation for Yap
+Group: Development/Languages
+Requires: %{name} = %{version}-%{release}
+
+%description docs
+Documentation for Yap.
+
+
%prep
%setup -q -n Yap-%{version}
%patch1 -p1
+cp %{SOURCE1} %{SOURCE2} %{SOURCE3} %{SOURCE4} LGPL/chr
%build
%configure \
@@ -33,6 +57,7 @@
make %{?_smp_mflags}
(cd docs; make info)
+
%install
rm -rf $RPM_BUILD_ROOT
make DESTDIR=$RPM_BUILD_ROOT install
@@ -40,10 +65,23 @@
cp -f docs/yap.info* $RPM_BUILD_ROOT%{_infodir}
cp -f LGPL/pillow/doc/pillow_doc.info $RPM_BUILD_ROOT%{_infodir}
+# fix permissions and flags
+chmod 0644 $RPM_BUILD_ROOT%{_datadir}/Yap/pl/*
+chmod 0644 $RPM_BUILD_ROOT%{_includedir}/Yap/*
+find -name '*.lgt' -exec chmod 0644 '{}' ';'
+find -name '*.h' -exec chmod 0644 '{}' ';'
+find -name '*.c' -exec chmod 0644 '{}' ';'
+
+# move examples to docdir
+mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
+mv $RPM_BUILD_ROOT%{_datadir}/Yap/examples $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
+rm -rf $RPM_BUILD_ROOT%{_datadir}/Yap/clpbn/examples
+
%post
/sbin/install-info %{_infodir}/yap.info --section "Programming Languages" %{_infodir}/dir 2>/dev/null || :
/sbin/install-info %{_infodir}/pillow_doc.info --section "Programming Languages" %{_infodir}/dir 2>/dev/null || :
+
%postun
if [ $1 -eq 0 ]; then
/sbin/install-info --delete %{_infodir}/yap.info %{_infodir}/dir 2>/dev/null || :
@@ -54,24 +92,38 @@
%clean
rm -rf $RPM_BUILD_ROOT
+
%files
%defattr(-,root,root,-)
%doc README
%doc changes*
+%{_bindir}/yap
+%{_datadir}/Yap
+%{_prefix}/lib/Yap
+%{_infodir}/*
+
+
+%files devel
+%defattr(-,root,root,-)
+%{_prefix}/lib/libYap.a
+%{_includedir}/Yap
+
+
+%files docs
+%defattr(-,root,root,-)
%doc docs/*.html
%doc docs/yap.pdf
%doc LGPL/pillow/doc/pillow_doc_html/*
%doc LGPL/pillow/doc/article.ps.gz
%doc --parent Logtalk/manuals
%doc --parent Logtalk/examples
-%{_bindir}/yap
-%{_datadir}/Yap
-%{_includedir}/Yap
-%{_prefix}/lib/libYap.a
-%{_prefix}/lib/Yap
-%{_infodir}/*
+
%changelog
+* Mon May 1 2006 Gerard Milmeister <gemi at bluewin.ch> - 5.1.1-1
+- new version 5.1.1
+- split off devel and docs packages
+
* Fri Feb 17 2006 Gerard Milmeister <gemi at bluewin.ch> - 5.0.1-2
- Rebuild for Fedora Extras 5
More information about the scm-commits
mailing list