mirror of https://github.com/vitalif/openscad
Merge branch 'master' into unstable
commit
19de4c9d15
51
.travis.yml
51
.travis.yml
|
@ -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="
|
||||
|
|
@ -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/)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -4,4 +4,5 @@ Version=1.0
|
|||
Name=OpenSCAD
|
||||
Icon=openscad
|
||||
Exec=openscad %f
|
||||
MimeType=application/x-openscad;
|
||||
Categories=Graphics;3DGraphics;Engineering;Development;
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
</p>
|
||||
|
||||
<p>
|
||||
Copyright (C) 2009-2013 <a href="https://github.com/kintel">Marius Kintel</a> <marius@kintel.net> and <a href="http://clifford.at">Clifford Wolf</a> <clifford@clifford.at>
|
||||
Copyright (C) 2009-2014 <a href="https://github.com/kintel">Marius Kintel</a> <marius@kintel.net> and <a href="http://clifford.at">Clifford Wolf</a> <clifford@clifford.at>
|
||||
</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>
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
12
src/value.cc
12
src/value.cc
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')
|
||||
|
||||
|
|
Loading…
Reference in New Issue