mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-03 21:09:11 +00:00 
			
		
		
		
	Merge branch 'master' into polysat
This commit is contained in:
		
						commit
						f54f33551e
					
				
					 308 changed files with 6606 additions and 18485 deletions
				
			
		| 
						 | 
				
			
			@ -24,8 +24,8 @@ def mk_dir(d):
 | 
			
		|||
os_info = {  'ubuntu-latest' : ('so', 'linux-x64'),
 | 
			
		||||
             'ubuntu-18' : ('so', 'linux-x64'),
 | 
			
		||||
             'ubuntu-20' : ('so', 'linux-x64'),
 | 
			
		||||
             'glibc-2.31' : ('so', 'linux-x64'),
 | 
			
		||||
             'glibc' : ('so', 'linux-x64'),
 | 
			
		||||
             #'glibc-2.35' : ('so', 'linux-x64'),
 | 
			
		||||
             'x64-win' : ('dll', 'win-x64'),
 | 
			
		||||
             'x86-win' : ('dll', 'win-x86'),
 | 
			
		||||
             'x64-osx' : ('dylib', 'osx-x64'),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@
 | 
			
		|||
from mk_util import *
 | 
			
		||||
 | 
			
		||||
def init_version():
 | 
			
		||||
    set_version(4, 12, 2, 0) # express a default build version or pick up ci build version
 | 
			
		||||
    set_version(4, 12, 3, 0) # express a default build version or pick up ci build version
 | 
			
		||||
    
 | 
			
		||||
# Z3 Project definition
 | 
			
		||||
def init_project_def():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -122,7 +122,7 @@ FPMATH_ENABLED=getenv("FPMATH_ENABLED", "True")
 | 
			
		|||
def check_output(cmd):
 | 
			
		||||
    out = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
 | 
			
		||||
    if out != None:
 | 
			
		||||
        enc = sys.stdout.encoding
 | 
			
		||||
        enc = sys.getdefaultencoding()
 | 
			
		||||
        if enc != None: return out.decode(enc).rstrip('\r\n')
 | 
			
		||||
        else: return out.rstrip('\r\n')
 | 
			
		||||
    else:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
variables:
 | 
			
		||||
  Major: '4'
 | 
			
		||||
  Minor: '12'
 | 
			
		||||
  Patch: '2'
 | 
			
		||||
  Patch: '3'
 | 
			
		||||
  AssemblyVersion: $(Major).$(Minor).$(Patch).$(Build.BuildId)
 | 
			
		||||
  NightlyVersion: $(AssemblyVersion)-$(Build.DefinitionName)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -35,6 +35,20 @@ stages:
 | 
			
		|||
        artifactName: 'MacArm64'
 | 
			
		||||
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
			
		||||
 | 
			
		||||
  - job: Ubuntu20
 | 
			
		||||
    displayName: "Ubuntu20 build"
 | 
			
		||||
    pool:
 | 
			
		||||
      vmImage: "ubuntu-20.04"
 | 
			
		||||
    steps:
 | 
			
		||||
    - script: python scripts/mk_unix_dist.py --dotnet-key=$(Build.SourcesDirectory)/resources/z3.snk
 | 
			
		||||
    - script: git clone https://github.com/z3prover/z3test z3test
 | 
			
		||||
    - script: python z3test/scripts/test_benchmarks.py build-dist/z3 z3test/regressions/smt2    
 | 
			
		||||
    - script: cp dist/*.zip $(Build.ArtifactStagingDirectory)/.
 | 
			
		||||
    - task: PublishPipelineArtifact@0
 | 
			
		||||
      inputs:
 | 
			
		||||
        artifactName: 'Ubuntu-20.04'
 | 
			
		||||
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
			
		||||
 | 
			
		||||
  - job: Ubuntu
 | 
			
		||||
    displayName: "Ubuntu build"
 | 
			
		||||
    pool:
 | 
			
		||||
| 
						 | 
				
			
			@ -512,6 +526,11 @@ stages:
 | 
			
		|||
      inputs:
 | 
			
		||||
        artifactName: 'Ubuntu'
 | 
			
		||||
        targetPath: tmp
 | 
			
		||||
    - task: DownloadPipelineArtifact@2
 | 
			
		||||
      displayName: "Download Ubuntu-20.04"
 | 
			
		||||
      inputs:
 | 
			
		||||
        artifactName: 'Ubuntu-20.04'
 | 
			
		||||
        targetPath: tmp
 | 
			
		||||
    - task: DownloadPipelineArtifact@2
 | 
			
		||||
      displayName: "Download Doc"
 | 
			
		||||
      inputs:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
trigger: none
 | 
			
		||||
 | 
			
		||||
variables:
 | 
			
		||||
  ReleaseVersion: '4.12.2'
 | 
			
		||||
  ReleaseVersion: '4.12.3'
 | 
			
		||||
 | 
			
		||||
stages:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -85,6 +85,35 @@ stages:
 | 
			
		|||
        artifactName: 'UbuntuBuild'
 | 
			
		||||
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
			
		||||
 | 
			
		||||
  - job: UbuntuBuild20
 | 
			
		||||
    displayName: "Ubuntu build 20"
 | 
			
		||||
    pool:
 | 
			
		||||
      vmImage: "ubuntu-20.04"
 | 
			
		||||
    steps:
 | 
			
		||||
    - task: PythonScript@0
 | 
			
		||||
      displayName: Build
 | 
			
		||||
      inputs:
 | 
			
		||||
        scriptSource: 'filepath'
 | 
			
		||||
        scriptPath: scripts/mk_unix_dist.py
 | 
			
		||||
        arguments: --dotnet-key=$(Build.SourcesDirectory)/resources/z3.snk
 | 
			
		||||
    - script: git clone https://github.com/z3prover/z3test z3test
 | 
			
		||||
      displayName: 'Clone z3test'
 | 
			
		||||
    - task: PythonScript@0
 | 
			
		||||
      displayName: Test
 | 
			
		||||
      inputs:
 | 
			
		||||
        scriptSource: 'filepath'
 | 
			
		||||
        scriptPath: z3test/scripts/test_benchmarks.py
 | 
			
		||||
        arguments: build-dist/z3 z3test/regressions/smt2
 | 
			
		||||
    - task: CopyFiles@2
 | 
			
		||||
      inputs:
 | 
			
		||||
        sourceFolder: dist
 | 
			
		||||
        contents: '*.zip'
 | 
			
		||||
        targetFolder: $(Build.ArtifactStagingDirectory)
 | 
			
		||||
    - task: PublishPipelineArtifact@0
 | 
			
		||||
      inputs:
 | 
			
		||||
        artifactName: 'UbuntuBuild20'
 | 
			
		||||
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
			
		||||
 | 
			
		||||
  - job: UbuntuDoc
 | 
			
		||||
    displayName: "Ubuntu Doc build"
 | 
			
		||||
    pool:
 | 
			
		||||
| 
						 | 
				
			
			@ -191,6 +220,11 @@ stages:
 | 
			
		|||
      inputs:
 | 
			
		||||
        artifact: 'UbuntuBuild'
 | 
			
		||||
        path: $(Agent.TempDirectory)\package
 | 
			
		||||
    - task: DownloadPipelineArtifact@2
 | 
			
		||||
      displayName: 'Download Ubuntu20 Build'
 | 
			
		||||
      inputs:
 | 
			
		||||
        artifact: 'UbuntuBuild20'
 | 
			
		||||
        path: $(Agent.TempDirectory)\package
 | 
			
		||||
    - task: DownloadPipelineArtifact@2
 | 
			
		||||
      displayName: 'Download macOS Build'
 | 
			
		||||
      inputs:
 | 
			
		||||
| 
						 | 
				
			
			@ -436,6 +470,11 @@ stages:
 | 
			
		|||
    pool:
 | 
			
		||||
      vmImage: "windows-latest"
 | 
			
		||||
    steps:
 | 
			
		||||
    - task: DownloadPipelineArtifact@2
 | 
			
		||||
      displayName: 'Download Ubuntu Build'
 | 
			
		||||
      inputs:
 | 
			
		||||
        artifact: 'UbuntuBuild20'
 | 
			
		||||
        path: $(Agent.TempDirectory)
 | 
			
		||||
    - task: DownloadPipelineArtifact@2
 | 
			
		||||
      displayName: 'Download Ubuntu Build'
 | 
			
		||||
      inputs:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -633,7 +633,72 @@ def mk_java(java_src, java_dir, package_name):
 | 
			
		|||
    java_native.write('      }\n')
 | 
			
		||||
    java_native.write('    }\n')
 | 
			
		||||
    java_native.write('  }\n')
 | 
			
		||||
    java_native.write("""
 | 
			
		||||
  public static native long propagateInit(Object o, long ctx, long solver);
 | 
			
		||||
  public static native void propagateRegisterCreated(Object o, long ctx, long solver);
 | 
			
		||||
  public static native void propagateRegisterFixed(Object o, long ctx, long solver);
 | 
			
		||||
  public static native void propagateRegisterEq(Object o, long ctx, long solver);
 | 
			
		||||
  public static native void propagateRegisterDecide(Object o, long ctx, long solver);
 | 
			
		||||
  public static native void propagateRegisterFinal(Object o, long ctx, long solver);
 | 
			
		||||
  public static native void propagateConflict(Object o, long ctx, long solver, long javainfo, int num_fixed, long[] fixed, long num_eqs, long[] eq_lhs, long[] eq_rhs, long conseq);
 | 
			
		||||
  public static native void propagateAdd(Object o, long ctx, long solver, long javainfo, long e);
 | 
			
		||||
  public static native void propagateNextSplit(Object o, long ctx, long solver, long javainfo, long e, long idx, long phase);
 | 
			
		||||
  public static native void propagateDestroy(Object o, long ctx, long solver, long javainfo);
 | 
			
		||||
 | 
			
		||||
  public static abstract class UserPropagatorBase implements AutoCloseable {
 | 
			
		||||
    protected long ctx;
 | 
			
		||||
    protected long solver;
 | 
			
		||||
    protected long javainfo;
 | 
			
		||||
 | 
			
		||||
    public UserPropagatorBase(long _ctx, long _solver) {
 | 
			
		||||
        ctx = _ctx;
 | 
			
		||||
        solver = _solver;
 | 
			
		||||
        javainfo = propagateInit(this, ctx, solver);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void close() {
 | 
			
		||||
        Native.propagateDestroy(this, ctx, solver, javainfo);
 | 
			
		||||
        javainfo = 0;
 | 
			
		||||
        solver = 0;
 | 
			
		||||
        ctx = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected final void registerCreated() {
 | 
			
		||||
        Native.propagateRegisterCreated(this, ctx, solver);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected final void registerFixed() {
 | 
			
		||||
        Native.propagateRegisterFixed(this, ctx, solver);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected final void registerEq() {
 | 
			
		||||
        Native.propagateRegisterEq(this, ctx, solver);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected final void registerDecide() {
 | 
			
		||||
        Native.propagateRegisterDecide(this, ctx, solver);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected final void registerFinal() {
 | 
			
		||||
        Native.propagateRegisterFinal(this, ctx, solver);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected abstract void pushWrapper();
 | 
			
		||||
 | 
			
		||||
    protected abstract void popWrapper(int number);
 | 
			
		||||
 | 
			
		||||
    protected abstract void finWrapper();
 | 
			
		||||
 | 
			
		||||
    protected abstract void eqWrapper(long lx, long ly);
 | 
			
		||||
 | 
			
		||||
    protected abstract UserPropagatorBase freshWrapper(long lctx);
 | 
			
		||||
 | 
			
		||||
    protected abstract void createdWrapper(long le);
 | 
			
		||||
 | 
			
		||||
    protected abstract void fixedWrapper(long lvar, long lvalue);
 | 
			
		||||
  }
 | 
			
		||||
    """)
 | 
			
		||||
    java_native.write('\n')
 | 
			
		||||
    for name, result, params in _dotnet_decls:
 | 
			
		||||
        java_native.write('  protected static native %s INTERNAL%s(' % (type2java(result), java_method_name(name)))
 | 
			
		||||
| 
						 | 
				
			
			@ -1825,6 +1890,7 @@ if _lib is None:
 | 
			
		|||
  else:
 | 
			
		||||
    print("    import builtins")
 | 
			
		||||
    print("    builtins.Z3_LIB_DIRS = [ '/path/to/libz3.%s' ] " % _ext)
 | 
			
		||||
  print(_failures)
 | 
			
		||||
  raise Z3Exception("libz3.%s not found." % _ext)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1836,14 +1902,14 @@ if sys.version < '3':
 | 
			
		|||
else:
 | 
			
		||||
  def _str_to_bytes(s):
 | 
			
		||||
    if isinstance(s, str):
 | 
			
		||||
        enc = sys.stdout.encoding
 | 
			
		||||
        enc = sys.getdefaultencoding()
 | 
			
		||||
        return s.encode(enc if enc != None else 'latin-1')
 | 
			
		||||
    else:
 | 
			
		||||
        return s
 | 
			
		||||
 | 
			
		||||
  def _to_pystr(s):
 | 
			
		||||
     if s != None:
 | 
			
		||||
        enc = sys.stdout.encoding
 | 
			
		||||
        enc = sys.getdefaultencoding()
 | 
			
		||||
        return s.decode(enc if enc != None else 'latin-1')
 | 
			
		||||
     else:
 | 
			
		||||
        return ""
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue