Merge branch 'master' into unstable

master
Marius Kintel 2014-03-10 10:42:53 -04:00
commit 19de4c9d15
28 changed files with 181 additions and 76 deletions

View File

@ -8,10 +8,57 @@ before_install:
- sudo apt-get install -qq build-essential libqt4-dev libqt4-opengl-dev libxmu-dev cmake bison flex git-core libboost-all-dev libXi-dev libmpfr-dev libboost-dev libglew-dev libeigen2-dev libeigen3-dev libcgal-dev libgmp3-dev libgmp-dev python-paramiko curl imagemagick
- sudo apt-get install -qq libopencsg-dev
env: OPENSCAD_UPLOAD_TESTS=yes
branches:
only:
- master
before_script:
- echo -e "Host files.openscad.org\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
- echo -n $openscad_rsa_{00..40} >> ~/.ssh/openscad_rsa_base64
- base64 --decode --ignore-garbage ~/.ssh/openscad_rsa_base64 > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
script: ./scripts/travis-ci.sh
env:
global:
- OPENSCAD_UPLOAD_TESTS=yes
- secure: "mBWdnkXe8BL1SqYRBnOOpXn60xtHGfpeVOh+HrK8xZPflLyJLdgAz3jsrgPaaMibfuygOEfn86jm8dFZPDJSeGh+gGbcjbtOywvYtr0d/KJPk2ccCavlGEBsTSdfWVBMH2hqZ+OXrSn4amx12fmcF/rnpRZu0jHxRWrL4SbouXM="
- secure: "gYPUvQekTxYW4bNIDvL6MFdPihd0HFGIq2saEbcOVyGYuZTdyBIzoh3tLIdG6jJNLWb/Nn2iWEsbsSsSIVk9UowW2qmuKVmzOyezKiu7wO2bdk08zeNtZLdFU4f8NsPz/ODXGQBCbjrBr8csnczQ9DKcxQeG2Lr9z1PjpJE43zY="
- secure: "N4tu1zJPq4tDrfArXawiQZ/oAb3jZ1xEonxH2WWMnUXj6CGMSrRbkUD7h7Yx5WcIgxkDE87Q+mMgKDNDhDQuK4RiTngwokXKSCHYn0odo10o1SWiNE42czLpbCTWJeM/5m+nyPhE1Hn8StTwiwqiA2YkBUICh/z+s6cmqV5JaEU="
- secure: "hfkGLUH90vkYIIQlBjAlYRxl/KJE/d5Z8cGnXGN77+RuvmGN2vMspSTXdvIe7KXesLs3ly96iA/mx3LLzW4YQu1qlwaAtffXiX2GBUFgRAHQV4Ty6PJzwRjzTxqZTh2jE+lZukB/6oh0ZlF4lpFYRFIMwLQMP64gGN0aqdQwc0I="
- secure: "UBH3ATAhykSH4su70oG6vmnOfV62ghNDLO/Y5dZwZvZVkKdERdddtpP8tPmJrkeqZp6nZs2DPA1ufgifaShZgv5eo5U1pdg4zFRA8UuOlK51QWdPYdk4/kTbifqeKhiQlNpvMXGnRPfk0a2HdAiaAHk0FKIPBRPAgwJlE03zKf4="
- secure: "YAMu566rDdaAHflMlvBdwkb7F4DNoDa6nJ1/d0bbaPDDk2onxzt5Nos9P3LMMya9XDo/+/8XZWUhdU2t8fwKfKiAanaIPiDYFaS7gZDohu7TI41rqJnnHFF1KNtG624PbABIgKBu8AEHsF1op7EG31SD8ZFyYTBdFOlgVruNWEA="
- secure: "cLVNa1aAtGyO7nHumphZRcNmMnFp+Ts4Bqh6WlclZ3RljEp5rKqHP3knHVgE6T0jC6zMTdNDwKHkyW2jlETRa0l7SGblZI1iuAATnNMwH14FPJgfHP2g30dYu714J6ik6UWUyFNex6o5ZlrVnTnrTuQpTQmF/Ehb4xBcFh780S8="
- secure: "VXa5G1ow1YND0Ap7jTH6oewSlgE3bQz0ZRKPz/bMEQhmImitAW24LG+kLi1RWfvtwJdHBOExlwh/yGpe508WXLF5F/Hv9LKTeAFixUSpFXt1Llsx1/LuApy7i4bq9nmx30Of5GiFvUARTr0wa1a3BbH5E0Sj963vVLwy+FZDiS8="
- secure: "K9pzYAsFc9rvFVz12Y80uFpruH7R5tJpurtGxQJpgSRCr4kRlJO+ODt4/Voq7lzFCiMuhbBiE0G4f8SzylyyiyJaZshAxqRBteEdDEMEnx1ND4FbqDnB9apWnWRoY1AbqBx1ckEy3jCvw1Tn9bRvvvcnOI6qXFxLpTJMP3eY6R4="
- secure: "Oa/blQENesTANzJbqzdQPQ1Hg99DaUVCekms1xkymLBUCSzqPL44KVdz3cxVGYBl/Om7mBwENEQ9BOUI6vGq+CZ7aaTYrYfEUokgvhGUgku0iLjxpHrIH04TH4XwpDXRg/iLwdQZO3d+xq7Q4XTBLOEyHVdzn5uDGP+cNoW9NbM="
- secure: "L3vKi+0gahSm8DF2GGp98FPhuWtUlqRRpCXjAUsSVNCPtru01tI4i6Kls7yqq2L+31FtkyWqBIlm1S1OZw8uiPyis3eUDqMRgASs4tOx/q2Xj2TEK8p+TKK+d3A8mct/y0e806GwdH5JIIppGSPOknPtxT92jZMrv0PnGnPAJSQ="
- secure: "fZzEs4GUtK494s63as9K72kmw0taicfouk2NDym58wHqS88UeRVjvrAkwoIGLJS6rCrh/4NkKhxPkd6JNVRVHy3KH8j2FYoIwtLStEC7YZfT25gi8EiN+O6MrTVre1WA9RT52v5gQ+a2v2YPUU6fBJAy6Xgy372PzoQrXF4iYOA="
- secure: "fNSoCKmJQUJJn4rFxsX0YXHIEtF3JCIixBkM8sCmuzOxjUPFLEjD/5D4x/t+FJfGwb1PR4194L3Tys7AK4IrpIDDXBO8vF3PYK1/evoPLPgj4IkPOReoX2zDUhxsvnEVlF3pGMK6erB6QZoDFCYD6OvqeQUxDDDuEvG8UEvNUgc="
- secure: "apJEmAnp5Ome0UJk+UEsdlVNBOX4bXE9FjBp6yYVrSeAEASFZTZbnIQXP9N8XwFc+TBa5aBlV9s7GZaieVW1/uNZg9njGUsbxPLtqpyHqJTDBgw3edcs7V12jGl+quRJoYVOtbyMQyr5VwCPzV6MmaLOoEtJM75yoSUoerkyNiI="
- secure: "AnXGOWlfhnxEuwqfnir411x/Z2Kvd/R37F8Jcv60+3dugCTLsOL/9i7rY5mwwm2ZFx4uwbCDXEC+UlW/vUhLhvdh8sCYocpghxY+WQye1cib+voqkP6Tgi1AtZL2CxBTJ2Kvyr+kNGTl0TvQC/uv3qI/D+ePijn89KFt9Z2NQEk="
- secure: "KPpkgyXr1mpbNOtxn0NAH2iS0NSy/LC6/DBoR9PBmK80LmHqhQkcB+OAwHy5q4RvRpeNIm2zg49OvV7RgzXQD3NXIy7Eik3uM6IzrcHXlDO6zPye/EAMYt/C0tJylR6ESDfp1+pEI0VyFz6pjFFs7FAX5m9UinaEJns7vucb8SA="
- secure: "Hf1TNzMMPw7msFCttHoF0V2wOFQERbGwYsZSMUac8njBXDjbsP+S/iYNkqoqJIfBjknXbn1U0RDfiDwvs/71lhV0FEoF2zPbOWitO7+ZeqpNcP2oMqnPBLCuCldKWxbsjKLwE5Qgd9KflPh49ZlnHe/cZZdzeDCIpAmHk+Ey/4U="
- secure: "cG7qndC1YAHa05QSLD8CzAZJOyJsHj4+I8OKvv+nfKFO/pQVZzKfF84v0ZVxpqdFNRRUwdH4n7zYCNAaMSoeSQmk++jyf+w8cu+x1MZ9HcnfqduuyirZR5iehmlIy1v/c1CsxAQeovDMulnFJOXGf7q7tUqB3rw/WlZZHn6Fpfc="
- secure: "NHym8MhLToBE5dlldCKTBn8NuLQg9jhjdB/9Gnn0h5j0G3x3O9yx3XbBtVSKNdvtqfGog6NG6XT2UhCYGtv59lTcWVR5tPulYkJV1vqeHfY21QeDYIESr/JOZaAIZ0RQaT/jWnoIghQNe38VMozWdwZ3ulKQ2HnzFagTbftfF5A="
- secure: "mClAXQOm9gc7UXuXpyqfNWp7JJU4n6n3pd792VK8K8ioXKVSySZLbJOFul5KY8ZLePCvdliZ0yfKqyBR7XqbzPFwH/0R3pppaI+T/0mZRi5SqcJ9KnJdf7jkTLsQI73wU25YC/T6ZHodEfANYTaP06Ex7QnY/djWsTvAH3Ga2dA="
- secure: "BdYq/BztHLp4TGExfjAxRW9Qtnpi7aizY6fyQNqOBorF6aYKNLOaaN8i7bURL7I5B+WT2vR/NFDv8Ehz096HFjnDZ8vVFn4tQQgGlxf+BcYrBOeA+AIxA9XR/yp9v6ljONasD7PQ8uDJoyUy9FOimet6T5GAOTy8LO8SRQDvxoY="
- secure: "iHb3IwbyrCKW884oVvckz7BR8F9YhLQXkEUvufc/5oKtsn/zMflHQ1+OV04q4j7B5hdu9/ur8T0q80YysJL8btHT0vnR7kx/uDx/S8tqXlMMb0Tr1JUGLFIHBZWRPUCayXTcBk06BrYRA1wB8cLQnLxqI4OfgMAN+rOv60CGR8k="
- secure: "XzK4KXCtcu5B1Flyiq9jl7hxnsUXXTYcmSq7bmIM4g8dsRz6EdDWrSBJUIstKCLckmoeQcfyCyXYjy2dvGgv7FX+Hu1nNGCZGy/rOIaciiinHf9mQZVTTwUZv1gGPZo2jdue15NvvCLwJt/N6SSZYor8fRyPyuVnK8/PBj4jcao="
- secure: "YFEbESe4qlFKXsgYgST3Z9NRMyNEj2oVYEzgcB+dWsVnfDufhtjUhQ+AGw+vsbYg2g2TIQzyVSWMG+mQo41SX4bLFH0Rwgial4ZnpWP7NHrkCgjIeeZRP/f81KIdGnCyabatOkJPQQ5qS0cZVRpQaXq8Zsxk+aDmYc2kZwWA3xc="
- secure: "Tv1OUgeQDBPwnL5GsEBiKjr1HdMrvsedk5I6ckbpBa6S1dKCzirOJRRHr9ZP4/TiZYEBd84nQZ5fKTIrCxU18CQzrs/gsS2hHyN+Nr8cpWpa6IovKOpMKxCYryLJFpX69cihcOVzp1xQq+a7sZq/yhZJmKaUBFlZchyPtJ1ysmg="
- secure: "iYz1GPvgcYpue6CKaW/O8iEolwC0UFztsZWzJZyrpZGrsw0fZbqpcn9ACEc+LQKYmvTo3hdBj9ewZB4+Bj4VMVIjgTlYsP0rYESsPd7njgpll+WfslRd5WNJLioUiPeb29yC4woiGa+/YHy2ACJI+ix7F6NyHk+2ri0MCOa4BnQ="
- secure: "Xwco3s7JM7hsAuDrAKuaYBjMccNTKWCXsoE48kQsKGlBM/iQ849nGTmImIKvdh0tZG5LDXgc04rbldhnpvMfWmty0hrQZuwjPaHBqHQ7zWXeNl3/CpAIGTBsefO7hTRoT2+xw1I6f4n8a5U7FICaGmWkR/MvykPOJyR+ms/hOQM="
- secure: "lNW2JDlel5MC9kwRu9lvNPWdlkbhAmkLo/YovVsrKyXPZfETWZO6IU2dDfKQvetIB2zQQnplbozdyiRBMywBnAk27FqLRAjbBqlKTC1jPlU4W29SBCMf+kJlVcQHvh0feeJChBZrVb2GQIAiHEkloDFX03E7RhOPAE5GqzvYow0="
- secure: "ZCfE5sS+70M4MVDOxVMlYcge7LewYbHIm0DE7QFfkwJ9sobaVr+uQMWe+9bA3DhxhdvQQ9p6lGE36ST+WYWopO7SHW6Ly+WvH1kM1nOZfY4w5R+BlAJ9QPcudnPUuFMOBXM0Wm8XccPuld2D5Jg7SalmS1F6mdArXsuL55CXxco="
- secure: "G4MDFYa3BbzqUGMfrABOjEjIa/pXHR8/jgOIQxY3FK2/0bYr//2YU/bw1gJBPQc8Ef243LzhTKvfFhntTecSfH2pS0Ezm2HWwtaF+lBg/A5bYCJX5Tek6HAOv1+aajTRZAjjj4X28T0NCqJI6u1WvbHwYFmW8wsfZtYZKB8JFuo="
- secure: "Py01+IBxGWKG7lyV10bZPYnqvLxNNBE+L6i1hvvvQmx078LfKtVr3tdDSZJVjf3H+gMXW0qnEhBYWJlzKPO5zCMhX314s43yxW3a5N+QZ74ucCO0Yvc4JXA8y7+g4lgsihJmzLSGQZziT+xnn0Q4iNpB8G0kXcl7zVT/ZsLFooQ="
- secure: "lkkLCzuHhR1Z3zzV/8me/PbzMConA8kdxUQ6mQb4VZE8h3wsRDh9P8yKciluV/ZVgqZtLG8VbVnLHgVzzu2zDTqf1t/Gsb5u8Rq5w/sTZyqMpB9qpRjHmq+uPds+ScvAplyoPH4oskXS8xQ8G1ykJwPBbRETyZzAU2/JoOgWiOs="
- secure: "KQlczojVt3jfMtsnl1GFiKsCxkPOaIr95MxopGYqqOVxzRDeNvtJcA/xQU1ouibJlx9B/EHZx0K+/DIk6dyr+irAVzgPGdT5pRxmjSREONPDaGEj9f4D6GWS3AtUJW2AqTMdtI3+d6o7oaYFGGXTCeW+qFMcsxEpn3eT1HMJs1A="
- secure: "XeqXuqqHPAW6/5WukY8y3n1PmaP7ASuNvMTd/Xv3sXzcci11ZKWNEOQDxZeRUwuEot4v2WG+m4HuvIqGWbz6mi8+4OaWUynLRitlGWj7JBu1igN9awmOw+HOcM32v2UcxUdsUSB5AdEOs7hafjodbshxrWQbo05ruk6Au4+jrd4="
- secure: "Ej8RRGUT95llMPDUtbx/lF7D9bKGxTCGdKZbTKFdIPjUzTJgE0pm89vIxKvq7y//oMCposX5DjcVolF+dS2Ya2031MTUto3mUwFq+sx3t2knWt812mQ6p2Ow/l6/uOlr2FHxUJKOxPeWqLRB6NYd9YnUiC3OJNlERr8nyHkCx4c="
- secure: "JsOTX5JsRAY3zyKa/5yYkd48Nejt9CAEraXVpN1NDW25jJmsOynyW5d2WYazJ1H0x1oR6Fhc4gstNxaj1MNh/gVM9O3UM2tyFnSxDY6fZnEGWaf17ln4dqi3KHXWU7h2Gdg1ah19NS0nWytooW6VcEXmk+cYSheTqyfc5gK7Sdo="
- secure: "mMc9MyopIjvzpDg3eN6owSmr2PI58JiPnlLhMNvOWW9axUzup5tthfqM+tvR/AqdLQSSMUC9JXwwQK0d543Q4YyoQ0jwVY2RT56VdEywxD5+yWRfXD+ANlJhdQWmlPVc3KsavKYmfQPBLbwe0nyhtQTWGeAgKTYvYT+k1/PD4rg="
- secure: "X7KDSiSOR3XcePJgTXNzwE1wU285yFsxB7crMLskD08wU8xdRqS8NL+1++/Lju6pypOkospI2AYH1JAJ7JK3Sx5QYM4MxgRJcrMHiTMirN3cm3KzkWUuv3iEZNJ7q6ANi5oFfHh3k0D4JhCEnA1ICTDPdq+r9+mOvgkrly8V0Dw="

View File

@ -89,9 +89,9 @@ Follow the instructions for the platform you're compiling on below.
* [Qt4 (4.4 - 4.8)](http://www.qt.nokia.com/)
* [CGAL (3.6 - 4.1)](http://www.cgal.org/)
* [GMP (5.x)](http://www.gmplib.org/)
* [cmake (2.8, required by CGAL and the test framework)](http://www.cmake.org/)
* [MPFR (3.x)](http://www.mpfr.org/)
* [boost (1.35 - 1.53)](http://www.boost.org/)
* [cmake (2.8, required by CGAL and the test framework)](http://www.cmake.org/)
* [boost (1.35 - 1.55)](http://www.boost.org/)
* [OpenCSG (1.3.2)](http://www.opencsg.org/)
* [GLEW (1.5.4 ->)](http://glew.sourceforge.net/)
* [Eigen (3.0 - 3.2)](http://eigen.tuxfamily.org/)

View File

@ -1,5 +1,5 @@
# OpenSCAD 2014.Q1
# OpenSCAD 2014.03
**Language Features:**
* Added diameter argument: circle(d), cylinder(d, d1, d2) and sphere(d)
@ -17,6 +17,7 @@
* GUI: Added Search&Replace in editor
* GUI: Syntax highlighting now has a dark background theme
* GUI: We now create a backup file before rendering to allow for recovery if OpenSCAD crashes/freezes
* GUI: Accessibility features enabled (e.g. screenreading)
**Bugfixes/improvements:**
* Reading empty STL files sometimes caused a crash

View File

@ -1,4 +1,4 @@
.TH OPENSCAD 1 "2013-06-xx"
.TH OPENSCAD 1 "2014.03"
.\" Please adjust this date whenever revising the manpage.
.SH NAME
openscad \- script file based graphical CAD environment
@ -19,9 +19,9 @@ the OpenSCAD user manual at http://en.wikibooks.org/wiki/OpenSCAD_User_Manual.
.TP
\fB-o\fP \fIoutputfile\fP
Export the given file to \fIoutputfile\fP in STL, OFF, DXF, or PNG format,
depending on file extension of \fIoutputfile\fP (which has to be lower case).
If this option is given, the GUI will not be started.
Export the given file to \fIoutputfile\fP in STL, OFF, DXF, or PNG
format, depending on file extension of \fIoutputfile\fP. If this
option is given, the GUI will not be started.
Additional formats, which are mainly used for debugging and testing (but can
also be used in automation), are AST (the input file as parsed and serialized
@ -46,12 +46,18 @@ read it again.
This option can be used to assign constant values to OpenSCAD variables. The
variable's value is an expression, so if this mechanism is used to assign
strings, care has to be taken that the shell does not consume quotation marks.
More than one \fB-D\fP options can be given.
More than one \fB-D\fP option can be given.
.TP
.B \-\-render
If exporting an image, use a full CGAL render. (Default is an OpenCSG compile)
.TP
.B \-\-camera=rotx,roty,rotz,transx,transy,transz,distance
.B \-\-preview[=throwntogether]
If exporting an image, use an OpenCSG previce (optionally in throwntogether mode for quicker rendering).
.TP
.B \-\-csglimit=limit
If exporting an image as an OpenCSG preview, stop rendering after encountering \fIlimit\fP elements to avoid runaway resource usage.
.TP
.B \-\-camera=transx,transy,transz,rotx,roty,rotz,distance
If exporting an image, use a Gimbal camera with the given parameters.
Rot is rotation around the x, y, and z axis, trans is the distance to
move the object in the x, y, and z directions, and distance is the
@ -66,7 +72,7 @@ not currently supported.
.B \-\-imgsize=width,height
If exporting an image, specify the pixel width and height
.TP
.B \-\-projection=[o|p]
.B \-\-projection=[o|ortho|p|perspective]
If exporting an image, specify whether to use orthographic or perspective
projection
.TP

View File

@ -11,7 +11,7 @@ o Pre-release preparations
$ cd libraries/MCAD
$ git pull
$ cd ../..
$ git commit -m "Updated MCAD"
$ git commit -m "Updated MCAD" libraries/MCAD
$ git push
(See bottom of this file for how to build release binaries)
@ -29,9 +29,11 @@ o Set VERSION and VERSIONDATE environment variable
scripts/publish-macosx.sh
scripts/publish-mingw-x.sh
o Update manpage: doc/openscad.1
o Update releases/$VERSION.md
o scripts/makereleasenotes.sh
o Update version number in doc/openscad.1
o Update copyright year in AboutDialog.html and mainwin.cc
o Tag release
@ -42,8 +44,7 @@ o build source package
o Sanity check; build a binary or two and manually run some tests
o git push --tags
o ./scripts/github-release.sh $VERSION
o git push --tags master
o Upload Source package
$ scp openscad-$VERSION.src.tar.gz openscad@files.openscad.org:www
@ -51,6 +52,10 @@ o Upload Source package
o Remove VERSION environment variable
$ unset VERSION
o Build binaries for all platforms and wait for upload
o Announce:
o ./scripts/github-release.sh $VERSION
o Write release email/blog entry
o Update web page
- news.html
@ -58,7 +63,7 @@ o Update web page
o Update external resources:
- http://en.wikipedia.org/wiki/OpenSCAD
o Write to mailing list
o Tweet
o Tweet as OpenSCAD
o Notify package managers
- Ubuntu: https://launchpad.net/~chrysn
- Fedora: Miro Hrončok <miro@hroncok.cz> or <mhroncok@redhat.com>

View File

@ -4,4 +4,5 @@ Version=1.0
Name=OpenSCAD
Icon=openscad
Exec=openscad %f
MimeType=application/x-openscad;
Categories=Graphics;3DGraphics;Engineering;Development;

8
icons/openscad.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-openscad">
<comment>OpenSCAD Model</comment>
<glob pattern="*.scad"/>
<icon name="openscad"/>
</mime-type>
</mime-info>

@ -1 +1 @@
Subproject commit 9a958fd11b0a6b5f8becd37c4f8a42f585abfcd8
Subproject commit 85794e4b4f2294a1b445a4d928866bedd5cc64ec

View File

@ -79,14 +79,6 @@ macx {
APP_RESOURCES.files = OpenSCAD.sdef dsa_pub.pem icons/SCAD.icns
QMAKE_BUNDLE_DATA += APP_RESOURCES
LIBS += -framework Cocoa -framework ApplicationServices
# FIXME: Somehow, setting the deployment target to a lower version causes a
# seldom crash in debug mode (e.g. the minkowski2-test):
# frame #4: 0x00007fff8b7d5be5 libc++.1.dylib`std::runtime_error::~runtime_error() + 55
# frame #5: 0x0000000100150df5 OpenSCAD`CGAL::Uncertain_conversion_exception::~Uncertain_conversion_exception(this=0x0000000105044488) + 21 at Uncertain.h:78
# The reason for the crash appears to be linking with libgcc_s,
# but it's unclear what's really going on
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
}
else {
TARGET = openscad

View File

@ -14,6 +14,7 @@
* GUI: Added Search&Replace in editor
* GUI: Syntax highlighting now has a dark background theme
* GUI: We now create a backup file before rendering to allow for recovery if OpenSCAD crashes/freezes
* GUI: Accessibility features enabled (e.g. screenreading)
**Bugfixes/improvements:**
* Reading empty STL files sometimes caused a crash

View File

@ -88,7 +88,7 @@ check_starting_path()
get_openscad_source_code()
{
git clone http://github.com/openscad/openscad.git
git clone https://github.com/openscad/openscad.git
if [ "`echo $? | grep 0`" ]; then
echo clone of source code is ok
else

View File

@ -52,6 +52,14 @@ fi
# Turn off ccache, just for safety
PATH=${PATH//\/opt\/local\/libexec\/ccache:}
# FIXME: Somehow, setting the deployment target to a lower version causes a
# seldom crash in debug mode (e.g. the minkowski2-test):
# frame #4: 0x00007fff8b7d5be5 libc++.1.dylib`std::runtime_error::~runtime_error() + 55
# frame #5: 0x0000000100150df5 OpenSCAD`CGAL::Uncertain_conversion_exception::~Uncertain_conversion_exception(this=0x0000000105044488) + 21 at Uncertain.h:78
# The reason for the crash appears to be linking with libgcc_s,
# but it's unclear what's really going on
export MACOSX_DEPLOYMENT_TARGET=10.6
# This is the same location as DEPLOYDIR in macosx-build-dependencies.sh
export OPENSCAD_LIBRARIES=$PWD/../libraries/homebrew

View File

@ -23,7 +23,7 @@
</p>
<p>
Copyright (C) 2009-2013 <a href="https://github.com/kintel">Marius Kintel</a> &lt;marius@kintel.net&gt; and <a href="http://clifford.at">Clifford Wolf</a> &lt;clifford@clifford.at&gt;
Copyright (C) 2009-2014 <a href="https://github.com/kintel">Marius Kintel</a> &lt;marius@kintel.net&gt; and <a href="http://clifford.at">Clifford Wolf</a> &lt;clifford@clifford.at&gt;
</p>
<p>
@ -82,6 +82,7 @@ Please visit this link for a copy of the license: <a href="http://www.gnu.org/li
<li><a href="http://www.github.com/GilesBathgate">Giles Bathgate</a>
<li><a href="https://github.com/brad">Brad Pitcher</a>
<li><a href="https://github.com/donbright">Don Bright</a>
<li><a href="https://github.com/t-paul">Torsten Paul</a>
</ul>
<p>
@ -102,20 +103,33 @@ Please visit this link for a copy of the license: <a href="http://www.gnu.org/li
<b>Patches</b>
</p>
<lu>
<li><a href="https://github.com/meta23">meta23</a>
<li><a href="https://github.com/jasonblewis">jasonblewis</a>
<li><a href="https://github.com/gregjurman">gregjurman</a>
<li><a href="https://github.com/brianolson">brianolson</a>
<li><a href="https://github.com/tjhowse">tjhowse</a>
<li><a href="https://github.com/logxen">logxen</a>
<li><a href="https://github.com/iamwilhelm">iamwilhelm</a>
<li><a href="https://github.com/clothbot">clothbot</a>
<li><a href="https://github.com/colah">colah</a>
<li><a href="https://github.com/peteruithoven">Peter Uithoven</a>
</lu>
<p>
<a href="https://github.com/meta23">meta23</a>,
<a href="https://github.com/jasonblewis">jasonblewis</a>,
<a href="https://github.com/gregjurman">gregjurman</a>,
<a href="https://github.com/brianolson">brianolson</a>,
<a href="https://github.com/tjhowse">tjhowse</a>,
<a href="https://github.com/logxen">logxen</a>,
<a href="https://github.com/iamwilhelm">iamwilhelm</a>,
<a href="https://github.com/clothbot">clothbot</a>,
<a href="https://github.com/colah">colah</a>,
<a href="https://github.com/peteruithoven">Peter Uithoven</a>,
<a href="https://github.com/tim-caper">tim-caper</a>,
<a href="https://github.com/sjkelly">sjkelly</a>,
<a href="https://github.com/OskarLinde">OskarLinde</a>,
<a href="https://github.com/Ivoah">Ivoah</a>,
<a href="https://github.com/brodykenrick">brodykenrick</a>,
<a href="https://github.com/a-e-m">a-e-m</a>,
<a href="https://github.com/gringer">gringer</a>,
<a href="https://github.com/Gazer">Gazer</a>,
<a href="https://github.com/pdbogen">pdbogen</a>,
<a href="https://github.com/hzeller">hzeller</a>,
<a href="https://github.com/vicnet">vicnet</a>,
<a href="https://github.com/dmopalmer">dmopalmer</a>,
<a href="https://github.com/steelman">steelman</a>,
<a href="https://github.com/ivoknutsel">ivoknutsel</a>,
<a href="https://github.com/achiestdragon">achiestdragon</a>
</p>
<p>
<b>Mailing list, bug reports, testing, contribs, help, &c</b>

View File

@ -23,11 +23,11 @@ ModuleCache *ModuleCache::inst = NULL;
/*!
Reevaluate the given file and all it's dependencies and recompile anything
needing reevaluation.
needing reevaluation. Updates the cache if necessary.
The given filename must be absolute.
Sets the module reference to the new modile, or NULL on any error (e.g. compile
error or file not found)
Sets the module reference to the new module, or NULL on any error (e.g. compile
error or file not found).
Returns true if anything was compiled (module or dependencies) and false otherwise.
*/
@ -42,7 +42,7 @@ bool ModuleCache::evaluate(const std::string &filename, FileModule *&module)
// Don't try to recursively evaluate - if the file changes
// during evaluation, that would be really bad.
if (lib_mod && lib_mod->isHandlingDependencies()) return lib_mod;
if (lib_mod && lib_mod->isHandlingDependencies()) return false;
// Create cache ID
struct stat st;

View File

@ -95,7 +95,11 @@ Preferences::Preferences(QWidget *parent) : QMainWindow(parent)
QActionGroup *group = new QActionGroup(this);
addPrefPage(group, prefsAction3DView, page3DView);
addPrefPage(group, prefsActionEditor, pageEditor);
#if defined(OPENSCAD_DEPLOY) && defined(Q_OS_MAC)
addPrefPage(group, prefsActionUpdate, pageUpdate);
#else
this->toolBar->removeAction(prefsActionUpdate);
#endif
#ifdef ENABLE_EXPERIMENTAL
addPrefPage(group, prefsActionFeatures, pageFeatures);
#else

View File

@ -16,11 +16,21 @@ Builtins *Builtins::instance(bool erase)
void Builtins::init(const char *name, class AbstractModule *module)
{
#ifndef ENABLE_EXPERIMENTAL
if (module->is_experimental()) {
return;
}
#endif
Builtins::instance()->globalscope.modules[name] = module;
}
void Builtins::init(const char *name, class AbstractFunction *function)
{
#ifndef ENABLE_EXPERIMENTAL
if (function->is_experimental()) {
return;
}
#endif
Builtins::instance()->globalscope.functions[name] = function;
}

View File

@ -78,7 +78,7 @@ void ControlModule::for_eval(AbstractNode &node, const ModuleInstantiation &inst
Context c(ctx);
if (it_values.type() == Value::RANGE) {
Value::RangeType range = it_values.toRange();
uint32_t steps = range.nbsteps();
boost::uint32_t steps = range.nbsteps();
if (steps >= 10000) {
PRINTB("WARNING: Bad range parameter in for statement: too many elements (%lu).", steps);
} else {
@ -230,7 +230,7 @@ AbstractNode *ControlModule::instantiate(const Context* /*ctx*/, const ModuleIns
else if (value.type() == Value::RANGE) {
AbstractNode* node = new AbstractNode(inst);
Value::RangeType range = value.toRange();
uint32_t steps = range.nbsteps();
boost::uint32_t steps = range.nbsteps();
if (steps >= 10000) {
PRINTB("WARNING: Bad range parameter for children: too many elements (%lu).", steps);
return NULL;

View File

@ -646,11 +646,11 @@ Value builtin_cross(const Context *, const EvalContext *evalctx)
}
double d0 = v0[a].toDouble();
double d1 = v1[a].toDouble();
if (isnan(d0) || isnan(d1)) {
if (boost::math::isnan(d0) || boost::math::isnan(d1)) {
PRINT("WARNING: Invalid value (NaN) in parameter vector for cross()");
return Value();
}
if (isinf(d0) || isinf(d1)) {
if (boost::math::isinf(d0) || boost::math::isinf(d1)) {
PRINT("WARNING: Invalid value (INF) in parameter vector for cross()");
return Value();
}

View File

@ -17,7 +17,8 @@ public:
AbstractFunction() : feature(NULL) {}
AbstractFunction(const Feature& feature) : feature(&feature) {}
virtual ~AbstractFunction();
virtual bool is_enabled() const { return (feature == NULL) || feature->is_enabled(); };
virtual bool is_experimental() const { return feature != NULL; }
virtual bool is_enabled() const { return (feature == NULL) || feature->is_enabled(); }
virtual Value evaluate(const class Context *ctx, const class EvalContext *evalctx) const;
virtual std::string dump(const std::string &indent, const std::string &name) const;
};

View File

@ -119,7 +119,7 @@ static char helptitle[] =
#endif
"\nhttp://www.openscad.org\n\n";
static char copyrighttext[] =
"Copyright (C) 2009-2013 The OpenSCAD Developers\n"
"Copyright (C) 2009-2014 The OpenSCAD Developers\n"
"\n"
"This program is free software; you can redistribute it and/or modify "
"it under the terms of the GNU General Public License as published by "
@ -161,7 +161,9 @@ MainWindow::MainWindow(const QString &filename)
: root_inst("group"), tempFile(NULL), progresswidget(NULL)
{
setupUi(this);
this->setAttribute(Qt::WA_DeleteOnClose);
// FIXME: We cannot do this since Context maintains a global stack which gets pushed/popped when
// mainwindows are created. To fix, we probably need a separate stack per window. kintel 20140309
// this->setAttribute(Qt::WA_DeleteOnClose);
if (!MainWindow::windows) MainWindow::windows = new QSet<MainWindow*>;
MainWindow::windows->insert(this);

View File

@ -67,7 +67,8 @@ public:
AbstractModule() : feature(NULL) {}
AbstractModule(const Feature& feature) : feature(&feature) {}
virtual ~AbstractModule();
virtual bool is_enabled() const { return (feature == NULL) || feature->is_enabled(); };
virtual bool is_experimental() const { return feature != NULL; }
virtual bool is_enabled() const { return (feature == NULL) || feature->is_enabled(); }
virtual class AbstractNode *instantiate(const Context *ctx, const ModuleInstantiation *inst, const class EvalContext *evalctx = NULL) const;
virtual std::string dump(const std::string &indent, const std::string &name) const;
};

View File

@ -42,7 +42,7 @@
using namespace boost::assign; // bring 'operator+=()' into scope
#include <boost/math/special_functions/fpclassify.hpp>
using boost::math::isinf;
#define isinf boost::math::isinf
#define F_MINIMUM 0.01

View File

@ -40,8 +40,6 @@
#include <glib.h>
#include <boost/math/special_functions/fpclassify.hpp>
using boost::math::isnan;
using boost::math::isinf;
std::ostream &operator<<(std::ostream &stream, const Filename &filename)
{
@ -645,17 +643,17 @@ void Value::RangeType::normalize() {
}
}
uint32_t Value::RangeType::nbsteps() const {
if (isnan(step_val) || isinf(begin_val) || (isinf(end_val))) {
return std::numeric_limits<uint32_t>::max();
boost::uint32_t Value::RangeType::nbsteps() const {
if (boost::math::isnan(step_val) || boost::math::isinf(begin_val) || (boost::math::isinf(end_val))) {
return std::numeric_limits<boost::uint32_t>::max();
}
if ((begin_val == end_val) || isinf(step_val)) {
if ((begin_val == end_val) || boost::math::isinf(step_val)) {
return 0;
}
if (step_val == 0) {
return std::numeric_limits<uint32_t>::max();
return std::numeric_limits<boost::uint32_t>::max();
}
double steps;

View File

@ -86,7 +86,7 @@ public:
iterator end() { return iterator(*this, RANGE_TYPE_END); }
/// return number of steps, max uint32_t value if step is 0
uint32_t nbsteps() const;
boost::uint32_t nbsteps() const;
friend class tostring_visitor;
friend class bracket_visitor;

View File

@ -8,6 +8,7 @@ Module cache size: 1 modules
Test1: Basic cache
------
o Turn off Design->Automatic Reload and Compile
o Open use.scad
o Compile twice (F5) - check that module reference is the same
@ -141,5 +142,5 @@ Test 16: Dependency tracking of underlying dependencies
o Turn on Automatic Reload and Compile
o Open mainsubsub.scad
o Verify that you see a red cylinder
o edit subdit/subsub.scad: Change color
o edit subdir/subsub.scad: Change color
o Verify that color changes

View File

@ -1,5 +1,4 @@
DEPRECATED: Using ranges of the form [begin:end] with begin value greater than the end value is deprecated.
DEPRECATED: Using ranges of the form [begin:end] with begin value greater than the end value is deprecated.
WARNING: Bad range parameter in for statement: too many elements (4294967295).
ECHO: nan
ECHO: inf
@ -12,9 +11,7 @@ ECHO: "INF", 0
WARNING: Bad range parameter in for statement: too many elements (4294967295).
ECHO: "-INF", 1
WARNING: Bad range parameter in for statement: too many elements (4294967295).
DEPRECATED: Using ranges of the form [begin:end] with begin value greater than the end value is deprecated.
WARNING: Bad range parameter in for statement: too many elements (4294967295).
DEPRECATED: Using ranges of the form [begin:end] with begin value greater than the end value is deprecated.
WARNING: Bad range parameter in for statement: too many elements (4294967295).
WARNING: Bad range parameter in for statement: too many elements (4294967295).
WARNING: Bad range parameter in for statement: too many elements (4294967295).
WARNING: Bad range parameter in for statement: too many elements (4294967295).

View File

@ -22,7 +22,6 @@ ECHO: "[a05] ", -2
ECHO: "[a05] ", -1
ECHO: "[a05] ", 0
ECHO: "[a06] ----- [0:-3]"
DEPRECATED: Using ranges of the form [begin:end] with begin value greater than the end value is deprecated.
ECHO: "[a06] ", -3
ECHO: "[a06] ", -2
ECHO: "[a06] ", -1
@ -34,7 +33,6 @@ ECHO: "[a07] ", 0
ECHO: "[a07] ", 1
ECHO: "[a07] ", 2
ECHO: "[a08] ----- [2:-2]"
DEPRECATED: Using ranges of the form [begin:end] with begin value greater than the end value is deprecated.
ECHO: "[a08] ", -2
ECHO: "[a08] ", -1
ECHO: "[a08] ", 0

View File

@ -461,13 +461,23 @@ def main():
trysave(html_filename, html)
print "report saved:\n", html_filename.replace(os.getcwd()+os.path.sep,'')
if upload:
page_url = create_page()
if upload_html(page_url, title='OpenSCAD test results', html=html):
share_url = page_url.partition('?')[0]
print 'html report uploaded at', share_url
else:
print 'could not upload html report'
failed_tests = [test for test in tests if not test.passed]
if upload and failed_tests:
build = os.getenv("TRAVIS_BUILD_NUMBER")
if build: filename = 'travis-' + build + '_report.html'
else: filename = html_basename
os.system('scp "%s" "%s:%s"' %
(html_filename, 'openscad@files.openscad.org', 'www/tests/' + filename) )
share_url = 'http://files.openscad.org/tests/' + filename;
print 'html report uploaded:'
print share_url
# page_url = create_page()
# if upload_html(page_url, title='OpenSCAD test results', html=html):
# share_url = page_url.partition('?')[0]
# print 'html report uploaded at', share_url
# else:
# print 'could not upload html report'
debug('test_pretty_print complete')